After learning to write a software test, I suddenly thought of the internet industry is now more fire. To understand the difference between Internet testing and learning to software testing.
Let's talk about the changes in Internet testing:
1. The biggest difference is that many of the products of the Internet are deployed and operated by themselves, and users can use them only with a thin client.
The thin client here is a browser, an app, or a client that needs to be installed, but the core data and business logic is mainly in the Internet company's room, in IDC, in the cloud. Here and the previous C/S, b/s architecture, the main difference between the enterprise system is to provide a wide range of people to service and who to operate and operation of such a system. So naturally, there is a lot more work in this area.
Narrowing the scope to test this aspect, you need to consider the current network problem. For example, there are the following aspects:
A. How to monitor the availability of the current network feature.
This needs to be done with OPS, but operations are aimed at more generic parts, such as machine resource usage, traffic, and bandwidth, but the partial product business level, such as which features are available, may require business testers to design and develop automated systems to monitor.
B. How to publish the function to the current network
After the test is generally released directly, so unlike traditional software has such a long test cycle, including internal beta,external beta process, and I understand the situation, a lot of web-based Internet products on average one day there are multiple releases, can be large and small. So the release may become the work of testers, of course, there are related system support. The problem that needs to be considered here is a common gray-scale publication based on various conditions, first for some users. After the release of the current network to do the verification.
C. How to ensure or verify that the test environment and the current network are synchronized
Once this model of the Internet, the problem of test environment will become more prominent, because often involves more systems, and some of the external system interface may be difficult to build or mock. On the other hand if the test environment is good, to the current network is also good. Appropriate mechanisms and tools are required to validate and synchronize.
2. Internet products are fast paced
Unlike traditional software products for a client or server, the cycle may be six months, a year, or even longer. There is plenty of time for project planning, requirements Review, then summary/detailed design, a test design document, a large number of test cases, a different test cycle, and a lot of time to prepare the test environment and automated testing.
For the time being, the products of the Internet are not so realistic. This is also a great challenge for testers, may see a demand in a few days to open the test, the use case is temporary open out, there is no time to automate, there is not many times to do the test design, and then measured two days this function on the line.
It is hard to feel the difference between the speed and the non-personal feeling. So how to guarantee the coverage and quality of the test in such a short time, if the omission is reduced?
This is a real problem, or a requirement, there are some measures, but there is no good answer.
3. More people are involved in the test .
Internet companies, test vs development ratio are very low, 1:6,1:7 are very common, or even higher, in such a ratio of cases, if to ensure quality? There must be more methods. Like what
A. Self-test for developers.
Testing takes more time many times because the quality of the code is not good enough, there are many bugs, there are lots of discussions, lots of times to pull the code. Therefore, it is important to improve the quality of the code submitted for development. Some companies are guaranteed by the developer's mandatory unit tests, and some are guaranteed by a functional level of self-test. Some data can be used to reflect the number of times a code is pulled, or the pass rate of a test case, and so on.
B. The experience of the product or operator.
Many Internet products are not like traditional software products, not a product manager to mention all the needs. Product, or Product manager, is a team that is responsible for each piece of work to present the requirements. In addition, many of the requirements may come from operations teams, business-related, or different systems. Each product manager or operation needs to try out the product in the experience environment after the developer has implemented the appropriate functionality, which is called the experience, to see if these features are what they want. This allows the tester to ensure that there is no obvious need to understand the problem before testing, to avoid wasting the human and time of the test.
C. Review prior to publication.
Different roles come to see if there is any problem with a finished work, as well as issues that need attention when releasing it, problems with the environment, problems with the configuration, problems with the data, and so on.
Some of the above practices may be helpful, but how to drive them, if they are tested, requires processes and tools to support them.
4. Some are test-free
Not everything that is posted to the web needs to be tested, and some changes are not required. This does not have a certain standard, depending on the specific release of the situation, as well as product and team maturity and other factors. For example, some temporary activities of the page, some small pictures or changes in style, some minor fixes and so on. Just post it and go to the extranet to verify it.
It is a very complicated problem, but there are some risks as well, but the improvement of efficiency is also obvious.
5. a huge amount of user challenges
In fact there are a lot of here to enumerate a few
A. How to guarantee or verify performance
Traditional software performance testing relatively simple, can be relatively easy to build a set of environment, traffic is more easily simulated. And the Internet, a product may have more than hundreds of thousands of servers, multi-tiered deployment, affected by a variety of factors, such as advertising campaigns, a sudden flow can be rushed to high. So the practice will be different, the full amount of simulation is not very realistic, and as mentioned above, release very fast, there is not so much time to do performance testing repeatedly. So how to do more lightweight performance testing is also a big issue.
B. browser compatibility.
Users can use a wide range of browsers, including the IE6 that everyone is scolding, and the IE9 n mode, the version update speed of the rocket in general Chrome and Firefox, and many kinds of domestic browsers. It's a big challenge to cover them all, but it's not possible, but the product team certainly wants the test to cover more. For some enterprise-class products can be claimed to support a few, but the Internet products are difficult to do so, it is tantamount to abandoning some users. How to design a strategy? Is there any technical means?
C. A small change caused by the problem can affect countless users, and many times will be found immediately, the pressure is very large. The entire repair process is also live operation, not so much environment and time to slowly adjust in the interior, how to ensure the quality of repair?
6. Fix the problem
Internet products compared to the traditional product of one advantage or feature is that the problem of repair is faster, because quickly can affect the user, and do not need to wait for users to play hotfix or patches, or even install a new version. There are a lot of times when this kind of problem happens to a very short time to repair, and most of the users are not aware of it. Sometimes this also becomes an excuse for quick & dirty, but the problem of the current network is generally listed as an indicator of the assessment. And some of the problems are not minor problems that can constitute an accident. In fact, for such products, testers for the leak test pressure is even greater.
7. differences in test tools and technology choices
Presumably because of the characteristics of the Internet's own products, the major companies are in a large number of use of open source, as well as the internal development of the platform and system. Accordingly, the platform and tools used in the test are mainly the two, either the open source tools (or some modifications), or the tools developed internally. In contrast, the traditional software industry buys some commercial testing tools, such as tools for performance testing, coverage or code checking, and a management platform for test cases and defects. At present, I understand the situation, the domestic several major internet companies are the transformation and self-research more, so in the resume column a bunch of big tools to use experience does not necessarily have much advantage. And it takes a lot of time for new people to learn and become familiar with these platforms.
The following are the similarities:
1. The same need to be very knowledgeable about products and businessFor testers, if they do not understand the product and the business, the test work is difficult to carry out, because even the most basic right-wrong (is not a bug) is difficult to judge, of course, except for some obvious errors, such as JS error information, this defective product experience can be found or wait until the user found. So we still need to spend a lot of time and energy to be familiar with the product business. From this point of view, there is no big change, just a different field, this difference is brought about by different products, not because of the traditional software or the Internet difference brought.
2. The same need to understand the technology of the productThis is actually a bit similar to the above, testers need to understand the technology used in product development, the depth of the test, and even a lot of testing techniques and tools for the application of a great deal about, such as performance analysis, memory leak discovery, coverage analysis and so on. Not to learn and to understand this, a lot of work has no way to carry out. From the direction to see no change, we also have to learn and practice these things in order to better understand. But the specific technology may be different, such as Internet web products may be used in js,php, Java, C + + and other languages, as well as a variety of Web servers, caches, proxies and so on.
3. Specific testing TechniquesThe above mentioned some product development technology, in fact, there is a piece of testing technology, in fact, this piece of refinement and traditional software development has many similarities and even the same place. For example, if you are doing static code scanning, local performance testing methods and tools, coverage tools, automated tools and frameworks, some monitoring tools, and so on. From this point of view, the difference between the technology is not very large, of course, the Internet has some special, such as a lot of web-based systems, distributed, multi-layered, the tool will make some requirements, this difference is not very large, because many traditional server software is also the case.
4. Method of test designAs mentioned above, because the product release rhythm difference, make the whole process must be lighter and faster, but for a specific function of the test, the design and implementation of the use case need to consider the problem is not much different from the traditional. Because this time everyone faces the same problem, how to measure this feature of the software. So some ideas and methods can still be used. Above all, the local differences are smaller, but the differences involving large forms and processes will be relatively large. It may be because of this, many people from the traditional software to the Internet will soon be able to integrate and start to play a role, and back to a few years, now the major Internet companies are mostly from the so-called traditional software companies.
Software Testing week Seventh--Internet testing