1) Testing & QA (Quality Assurance)
When I first started the test, I never understood the difference between testing and QA. I always thought that QA included the test content. Once I downloaded a trial version of the test tool, I suddenly found that testing manager and QA manager are in the job selection for entering personal information. I feel that the two cannot be confused.
What are their differences?
First, let's understand what QA is. Software Quality Assurance is responsible for monitoring, ensuring and improving the implementation process throughout the software development process, and ensuring that all agreed agreements and processes are executed, meets the standards and ensures that relevant problems are properly handled. In a sense, Quality Assurance focuses on "Prevention ".
Testing checks and evaluates the system or software, focusing on "Detection ". We can also think that software testing is mainly responsible for "Quality assurance", while software quality assurance is mainly responsible for "process assurance ". Because software testing is also part of the software development process, QA also checks whether the testing process is executed according to the prescribed process. One common goal of software testing and software quality assurance is that both are designed to improve the quality of software.
In most software enterprises, testing and QA are independent departments and reporting objects, responsible for different jobs. This is also required by CMM. However, testing and QA can also be combined into an independent organization for work. Whether they can maximize the advantages depends on different organizations and organizational structures.
2) testing and debugging
Unlike debugging, debugging is not a test. It is easy to understand this truth. Testers never use debugging. The purpose of the test is to discover errors, while debugging is to locate and correct errors. Debugging may occur at any time after the encoding starts. debugging is always associated with testing.
3) Be careful to test
Some people think that careful people can do a good job of testing, and even in the requirements of many testers, it is particularly important to note that this person needs to be careful.
First of all, no matter what industry you are in, you can always think of it as an advantage. No one is fond of employees. Similarly, carefulness is also a required condition for testers. However, being careful doesn't mean everything. Let's explain it from the simple example below.
Assume that two testers, A and B, are both just learning and testing an application software. Apart from being careful, the knowledge and background of both testers are the same. A is careless and B is careful. Then, Party A and Party B conduct a test at the same time, that is, using the application to operate the software. If this application has a total of 100 hidden defects, a may find 30 of them, and B may find 50 of them. From this point of view, careful people seem to be more suitable for testing than careless people.
However, after careful consideration, the two of them are conducting incorrect tests. There is no test plan and no test cases. Even if they are themselves, the problems that can be found during a repeated test may be quite different from those found for the first time. The test is not planned, unexpected, casual, and non-repetitive. It can be said that such tests are meaningless and meaningless, and there are a lot of hidden problems in the program. Such products are unacceptable to users.
Now I want to change to an experienced software tester, who is guided by engineer C. Based on the relevant documents and features of the application, tester C develops the test plan. tester, B Also completed the relevant test cases in the help and inspection of C. Then they performed tests based on the completed test cases, and each detected 90 hidden errors, greatly improving the quality of the software. At this time, the testing process is planned and can be reproduced. It does not depend on whether the actual tester is careful or not. At this point, you can clearly understand that testing well is not the main thing. You must pay attention to methods and skills before you can really do well in testing.
4) The requirements for testers are lower than those for developers
From a recruitment information, one software developer and one software tester are recruited. Requirement for education, developer: Bachelor degree or above, Tester: specialist or above; from a senior management of a company, "test is not to find someone to install the program and run it again "; looking at the software enterprise, the salaries of developers are obviously different from those of testers. From software designers, "If we don't write the program, can we test something? ". It seems that testing personnel's abilities are inferior to those of developers in various aspects. Is that true?
If the entire software company is compared to a cannon, sales and the market must be the cannon shells, and development and testing are shells. If there are no shells, the shells are not very useful. Of course, if you are willing to throw the shells with your hands. However, if there is no test, the shells developed may be dumb and useless. If a light attacker hits a target, the attack will not go off. If you do not use shells that have not passed the test, do you dare to use them? The test does not simply install or run the program. It involves many methods, strategies, and techniques. In the actual software development process, development and testing have their respective roles. Development requires familiarity with design, programming, and debugging, and requires a considerable depth of knowledge. Testing requires writing plans, it is very familiar with cases, writing scripts, and executing tests. At the same time, because the contact area in the test is wider than that in development, the required understanding and comprehensive ability are also very demanding, it requires considerable learning ability and knowledge breadth.
If developers are very competent and testers are not able to match each other, a dumb bullet will appear in the end. Only the two parties have the same abilities and coordination, it is possible to make high-quality shells.
5) testing can be conducted by developers.
I believe that the vast majority of readers agree that testing should not be conducted by developers. The test is conducted by a dedicated tester, which is faster and better, regardless of whether the developer tests their own programs or performs interchange tests with other developers.
Testing requires an objective attitude and a calm mind. For various reasons, people often have a psychology that they do not want to deny their work. They think that exposing problems in their programs is not a pleasant thing, or they think that their programs are no longer a problem. This mental state becomes an obstacle for testing your own programs. Many owners know that it is not easy to remove the paste wallpaper (destructive process). If the paste wallpaper was originally pasted by him rather than others, he may feel unbearable. Therefore, most programmers cannot effectively test their programs because they cannot bring themselves into the necessary mental state (rather than exposing errors in their programs. In reality, you can often hear developers say, "You don't need to test it. I have tested it and it won't be a problem.
In addition to this psychological problem, there is also an important problem: the program may contain errors caused by the programmer's explanation of the problem or misunderstanding. If this is the case, when programmers test their own programs, they often test with the same misunderstanding and inertial thinking, making it difficult to find the problem.
Furthermore, we can regard testing as writing articles. As many authors know, it is very difficult to proofread or criticize their own ideas. That is to say, finding defects in your work is often beyond the psychological status of people.
Testers can not only overcome the above problems, but also view the software products and excellent testers from other perspectives and perspectives. They can also realistically consider the problems from the customer's perspective. The software testing organization has an independent organization that can reduce the interference of the software development organization during testing. It is independent, professional, calm, and objective to test and evaluate software products.
Therefore, in terms of technology and management, software testing should be conducted by a separate testing organization, regardless of whether the process or target is completed effectively, instead of developers.
6) all problems can be found during the test.
Some people think that all the errors in the program can be found as long as the correct method is used and long enough time is given. This is wrong unless the application is simple enough.
Make sure that an application has no errors. All the paths, branches, and loops of a necessary element in the program have been traversed. This is not possible for a considerable number of programs. For example, a C program that only requires 100 lines of source code contains a loop that executes 20 times, then it contains 13 lines with different execution paths up to 10. If you want to perform a exhaustive test on such a path, even if you can test 1000 paths in one second, it will take 3170 to complete all tests.
The above situation shows that such testing is unrealistic. Even if there is no similar situation in the program, the error cannot be completely avoided. First, the test is contingent. The input of data a is correct, but data B may fail. Even if the input of data a is correct this time, in the next environment, the same a data may fail. According to a IBM study, some errors run for a few hours, and others do not appear until several years later.
Defects (errors) cannot be completely avoided. Only a few defects are allowed.
Some misunderstandings about testing"