Self-cultivation of Software Testing: Positive Thinking and Reverse Thinking

Everyone must be familiar with forward thinking and reverse thinking, because this is a commonplace question. This way of thinking has been running through the design and execution of software test cases. The existing software testing scientific theory system relies on the expected and actual results of the test to determine the correctness of the software. Let me share with you the positive thinking and reverse thinking tests.

Positive thinking

The positive thinking of software testing is to try to verify that it is working, that is, the functions of the software are executed in accordance with the pre-design, and the correctness of all functions of the system is verified one by one with positive thinking.
In normal tests, we have such test cases everywhere. Take the banking system as an example: the developer adds a field of payee information. Starting from a positive thinking, we usually think that these fields are available in our tests. Yes, the payee information can be displayed normally and the elements are correct, and the various data formats are verified within the scope allowed by the business.

Of course, we can incorporate different testing methods into the positive thinking test cases, using effective data, correct processes, and diverse scenarios to deduce the execution of the software; the execution of these cases is based on the recognition that the software satisfies On the basis of need, through the execution of cases to prove that the software is successful, this is positive thinking

Reverse Thinking

Reverse thinking in software testing is to test the software if it is wrong.
Someone said: "If you compare the forward test to a pupil who obeys the teacher, the reverse test thinking is the child who opposes the teacher and mischiefs everywhere."
In short: I just want to confront you
from a logical point of view. The two propositions that are opposite to each other are equivalent propositions. It can be concluded that
if p?q is true, then ¬q?¬p,
starting from the positive thinking, we come to a true proposition: If the BUG is fixed, then the program is executed without error.
The beginning of the article mentioned that software testing determines its correctness through expected results and actual results, so as to determine whether the program meets expectations.
Suppose this proposition is regarded as the process of software execution. "BUG is fixed" as the expected result, and "program execution is correct" as the actual result. Obviously, if this proposition is true, a conclusion can be drawn from the software execution process-the software meets expectations. Now we start from reverse thinking from another angle, and come to its reverse proposition:
"If the program is executed incorrectly, then the BUG has not been fixed."
In other words, if you want to prove that the BUG has not been fixed, you must prove that the program is executed incorrectly. Based on reverse thinking, we usually prove the existence of the assumption of "program execution error" by designing and executing test cases. So how to design and execute test cases based on reverse thinking? You can start from the following points:

  • Constantly thinking about the misunderstandings of developers
  • Bad habits of developers
  • Program code boundary
  • Input of invalid data
  • System weakness
  • Try to destroy the system, destroy the system

Whether it is forward thinking or reverse thinking, the purpose of software testing is the process of executing programs to find errors. To borrow a classic saying "A good test case is that it can find errors that have not been found so far." I wish you all continue to improve your professional qualifications and grow quickly on the road to testing!

Recommend good articles:

10 years of software testing engineers' perceptions-to friends who are still in confusion

What kind of person is suitable for software testing?

Knowledge to understand python automated testing(3)

Which is more suitable for automated testing, Python or Java?

The daily work of software testers

Play with Python+Selenium automated testing in 10 minutes, and teach you a quick start!

Finally: Welcome to follow the editor to receive a summary of the core knowledge of Python automated test engineers with a 300-page pdf document! Software testing technology exchange group: (313782132) The content of these materials are all the knowledge points that the interviewer must ask during the interview. The chapter includes many knowledge points, including basic knowledge, Linux essentials, Shell, Internet program principles, Mysql Database, package capture tool topics, interface testing tools, advanced testing-Python programming, Web automation testing, APP automation testing, interface automation testing, advanced continuous integration testing, testing architecture development testing framework, performance testing, security testing, etc.

Guess you like

Origin blog.csdn.net/weixin_50271247/article/details/108491437