A Tester's Beginner's Guide


This article introduces what testers do, and plays the role of enlightenment and understanding. The focus is on the following questions:

  1. What is software testing
  2. The difference between software testing and software development
  3. The difference between software testing and software debugging
  4. Qualities of a good tester

1. Understand the test

1. Test scenarios in real life

Think about it, what are the test scenarios in life?

  1. take an exam

The exam is also a kind of test, to test whether you have mastered what the teacher said.

  1. shopping for clothes

When buying clothes, you must not try all the clothes on the shelf. First of all, you have to choose one that is generally pleasing to your eyes. (Appearance test)

Then, see if the clothes match you, whether the clothes set off your skin tone, and set off your temperament. (style, color test)

Also, by touching, feel the comfort of the clothes. (Comfort test)

In addition, you will also check the materials recorded on the brand of the clothes. (Material test)

After the above conditions are met, we will ask for the size and price, the size is suitable to fit, and the price needs to be within our budget. (Size, price test)

2. What is software testing

Before understanding software testing, we first need to know what is software?

Software refers to some applications installed on the hardware, such as: web system (school educational administration system, office system, etc.); APP (qq, vx, csdn).

The function of the software is realized by the developer. After the function is realized, the work to be done afterwards is to test whether the function meets the needs of the user and whether there are still some bugs. For this kind of test for the system function, It's called software testing.

The most common understanding is: Software testing is to find bugs and discover defects.

In fact, software testing is to verify whether the characteristics of software products meet the needs of users . The user here refers to the person who uses the software, but this person is not necessarily the user, but may also be the owner; more precisely, the user is the person who buys the software. People who own the software have the right to own the software, and the users we usually refer to refer to those who have the right to use the software (those who buy it with money), and there are some traffic users who use some free software (WeChat/ QQ) users; the sum of these three is the real user.

In the earliest days, people regarded testing more as a "test" for software products, checking whether each function of the software was operating normally.

In 1983, Bill Hetze defined software testing as: software testing is a series of activities to evaluate the characteristics or capabilities of a program or software system, and to determine whether the expected results have been achieved. From this, we can see the following Two points:

  1. Testing attempts to verify that the software "works", that is, verifies that the software functions correctly.
  2. The activity of testing is based on the "expected result" of the tester, where the 'expected result' refers to the requirement definition.

In layman's terms, the software has many functions designed according to the needs put forward by users, and software testers need to verify all aspects of software functions:

  1. Verify whether the function can run normally (the code can run, but it does not mean that the expected effect can be achieved).
  2. Verify whether the function meets the user's needs (user's needs == expected effect).

The characteristics of software testing: software testing is just a sample experiment, which is inexhaustible.

3. Practical exercises

Suppose we are testing the login function of a certain software , write down the key points of the test.

It should be noted that the topic is to test the login function of a certain software, and it is not clear what kind of system it is, and the scope given is very vague; therefore, we cannot perform "one-pot" operations, we need to use "categorization" to Analyze this problem.

img

img

img

It should also be noted that it is impossible to try all the possibilities here. It must be clear that it is impossible to exhaustively enumerate all the situations!

Software testing is just a sample experiment. Software testers must ensure the correctness of main functions (functions frequently used by users) and core processes. Put it back.

2. The difference between software testing and software development

There are roughly three types of jobs related to the Internet:

Software development : To develop software systems and implement functions. For example, I am learning Java. There will be some frameworks, databases, data structures, etc. in Java. These internal combustion contents belong to the knowledge that needs to be involved in software development.

Software testing : verify the correctness of software functionality, and the specific verification methods mainly include manual verification and automatic verification.

Test development : develop test tools and test scripts, the purpose of which is to improve test efficiency.

It should be noted that in actual work, testing work may include both software testing and test development, and in fact no fine distinction is made.

The main differences between software testing and software development are as follows:

  1. job content and skills

The most common job in software development is to use different programming languages ​​to finally produce software (coding) , which requires developers to have concentrated skills and a high degree of professionalism (need to learn a certain depth). We see the most positions about software development The most are engineers of various languages, take Java as an example:

As a Java engineer, we need to be clear about the underlying implementation and principles in order to write efficient code; such as data structures: hash table, linked list, sequence table, etc. Learning these is to introduce appropriate Only by mastering the skills deeply enough and understanding the underlying logic implementation, can developers know which data structure to use in which scenarios, just like brushing off questions, which requires limited time and space complexity , if the requirements are not met, it will not pass.

The work of software testing is to write test cases, execute test cases, send test reports, write automated test cases, and develop related test tools. Testers need to master the breadth of skills, because testers have to test all aspects of the product, Whether the appearance is good-looking, WEB UI automation, back-end interface testing, performance, security, etc. If you do not have a certain understanding of the technologies involved in these aspects, you may not be able to start the testing work. The wide range of tester skills mainly reflects You have to learn to operate various testing tools, such as:

  • Interface: soupUI, postman, jmeter
  • Automated testing: java, Python, unittest, testNG, robotFrameWork (RF framework), selenium tools
  • Performance testing tools: loadrunner, jmeter
  • Packet capture: Charles, fiddler (fiddler can also simulate weak networks)
  • APP testing: appium, Macaca

Don't look at the many written here, but in fact, as long as you can use them to assist your work, you don't need to go too deep to understand what the bottom layer is like.

  1. Prospects

The remuneration of Test Open is actually not much different from that of other technical positions, and the development prospects are also very good, especially the development prospects of automated testing, security testing and other fields are basically the same as R&D; see the following route:

  • Development: Junior Development Engineer -> Intermediate Development Engineer -> Senior Development Engineer -> Architect -> CTO
  • Testing: Junior Test Engineer -> Intermediate Test Engineer -> Senior Test Engineer -> Architect -> Project Manager

Moreover, many school recruiters do not know that there is a test development position when they are looking for a job. They may only know about the two technical positions of software development and software testing, and the pressure of competition will be much less.

  1. Salary and working environment

Under normal circumstances, employees of the same level in large factories, whether it is front-end, back-end, or testing, have little difference in salary; the salary of testing in small and medium-sized factories is slightly lower than that of development, as for the working environment, the environment of large factories is very good Yes, just try your luck for small and medium venues!

3. The difference between software testing and software debugging

  1. different roles

Software debugging: It is done by pure developers , that is, the developers themselves debug.

Software testing: testing + development are performed together (usually, black box testing is performed by testers, part of white box testing, system testing is performed by developers).

  1. different stages

Software debugging: Debugging will only be carried out during the development phase .

Software testing: testing is accompanied by the entire software life cycle (test intervention time is earlier than debugging), from product production to release, throughout the entire software development process, during the development process, there are software everywhere test.

  1. Different ends and means

Software debugging: To ensure that the program does what the programmer wants it to do, when we type the code, there is a problem with the code, we need to debug (observed through debug ), this kind of debugging is called software debugging .

Software testing: To ensure that the program solves the problem it should solve, the tester verifies whether the software meets the user's needs, and conducts analysis and testing through the equivalence class division method, boundary value method, black and white box test, etc.

In fact, software testing and software debugging are to find and solve problems from different angles . Debugging starts from my own point of view. I just need to complete the functions that the leader asked me to implement, and I only care that the functions I implement can be executed normally; And debugging is from the user's point of view, to see what functions have not met the user's needs.

4. The development of software testing

  1. Focusing on software debugging, it happened in the 1950s.
  2. In 1957 Charles Baker distinguished between debugging and testing. This is an important milestone in the history of software testing, marking the existence of independent software testing.
  3. In 1979, "The Art of Software Testing" gave the definition of software testing: testing is the process of executing a program to find errors. It means that software testing not only proves that the software does what it should do, but also ensures that it doesn't do what it shouldn't.
  4. In 1983, the National Bureau of Standards (National Bureau of Standards) issued VV&T, which proposed two well-known terms in the testing field: Verification and Validation. These mean that software testing is developing as an independent, professional, and influential discipline of engineering.
  5. Prevention first is one of the mainstream ideas of current software testing, and software testing has run through the entire software development life cycle.

5. Software testing positions

  • Software test engineer : The main work of an engineer generally includes requirement analysis, writing test plans and test schemes, designing test cases, executing test cases, tracking bugs, writing test reports, etc.; there are more functional tests, and less development work is involved.

  • Test development engineer : According to the characteristics of the project, develop some automated test scripts, or automated test tools, or small tools used in software testing to improve work efficiency, so that testing can be performed more effectively and software can be improved. The quality of the product; the purpose of the test development engineer is to allow the test engineer to perform the test work more efficiently and quickly; the test development position generally requires a certain development ability, and the ability to solve problems is particularly important.

  • Automated test engineer : Design automated test cases and develop automated test frameworks.

  • Performance test engineer : perform performance tests on the system, including using tools and writing performance automation test scripts.

  • Security test engineer : Mainly analyze the possible security problems of the product, conduct penetration tests in various aspects, and improve the security of the product.

  • Others : system test engineer, embedded test engineer, hardware test engineer.

6. Qualities of an excellent software tester

Skill related :

  1. Excellent test case design ability ; test case design ability refers to the ability to design excellent test cases that can find defects efficiently and ensure product quality no matter what type of test; then it is very important to improve the ability of test case design. We must master the method of designing test cases, accumulate more, summarize, and read more good test case design cases to further improve our ability to design test cases.
  2. Master automated testing technology ; mastering automated testing technology can free you from a lot of repetitive manual labor, so that you can spend more energy on more types of testing.
  3. Exploratory thinking ; test engineers continue to learn the system under test in the process of executing the test, combine their own experience to make systematic error guesses and logical reasoning, sort out and analyze more targeted test concerns, in short, testers Your thinking is not bound by rules and regulations, you must have divergent thinking, and be able to think about problems in combination with reality.

Comprehensive ability :

  1. Communication ability : The communication ability of a test engineer will directly affect the efficiency of business development. Good and clear communication ability is a "stepping stone" to whether a technically excellent test engineer can achieve better development.
  2. The ability to learn quickly ; the ability to quickly learn and understand different business needs and functions, and the ability to learn new technologies and methods for testing.
  3. Ability to express words ; test cases are written in words, and the bugs you find must also be described in detail through documents. What are the bugs, where are these bugs, what are the effects, etc...
  4. Development ability : Master certain development techniques, which is an advantage for testers.
  5. Stress resistance ; test workers, especially those in the Internet industry, need to be able to withstand various pressures, for example: if the construction schedule is tight, the test time will change from 5 days to 1 day...
  6. Sense of responsibility ; A sense of responsibility is needed for any job. For test workers: testing is often the last gatekeeper of product quality; because it is difficult to measure the effectiveness of test work, the execution of test cases and the number of bugs cannot explain the quality of the product. Whether the quality is qualified or not; therefore, the sense of responsibility is one of the most important qualities for testing; that is to say, if you find a BUG, ​​you must correct it in time, and you cannot let it go.

Practical exercises to cultivate exploratory thinking:

  • Suppose we want to test the function of a ticket vending machine now

img

imgimg

Guess you like

Origin blog.csdn.net/Trong_/article/details/130448900