7 Fundamentals in Software Testing

Tram Ho

Software testing is a process of implementing software or an application to identify defects or defects. To test an application or software, we need to follow some guidelines to make our products error-free and that also helps test engineers test software with effort and time. their. Here, in this section, we will learn about seven essential principles of software testing

1) Test proves the presence of error

Any application or product that goes into production after sufficient number of tests by different groups or going through different stages such as System Integration Testing, User Acceptance Test and Testing beta, etc. So have you ever seen or heard from any test group that they have fully tested the software and there are no bugs in the software? Instead, every test team confirms that the software meets all the business requirements and that it is working according to the needs of the end user. In the software testing industry, no one will say that software is error free, which is absolutely true since testing cannot prove that software is free of bugs or error free. The solution is to find more and more hidden defects using different techniques and methods. Testing can reveal undiscovered defects, and if defects are not found it doesn’t mean the software is free of bugs.

Example: We can take a simple real-world example. If you notice, the advertisement for Lifeboy hand sanitizer says it protects against 99.9% of germs if using this hand sanitizer. This clearly shows that the product cannot 100% eliminate the pathogen. So it can be seen that nothing can be 100% absolute. Applying in the test concept, we can say that no software is error free.

2) Test as soon as possible

Testers need to participate in the early stages of the Software Development Lifecycle (SDLC). Defects can therefore be identified during the requirement analysis phase or any deficiencies in the documentation. The cost involved in fixing these defect is very little compared to the defect / defect found in later stages of testing.

Take a look at the image below that shows how the error correction cost increases as the test progresses to direct production.

The image above shows that the cost required to fix the error found during the Requirements Analysis is less and it continues to increase as we move into the Test or Maintenance phase.

Now the question is, how early should testing be started?

After the requirements are fulfilled, testers need to join for analysis and testing. Analysis and inspection should be performed on the required document, specification or any other type of document so that if requirements are incorrectly specified it can be corrected immediately. for fixing them in the development phase.

3) Full testing is not possible

Cannot test all functions with all valid and invalid input combinations in real test. Instead of this approach, testing several combinations is viewed based on the priority of using different techniques. Exhausted testing will require unlimited efforts, and most of those attempts are ineffective. Also, project timelines will not allow too many combinations to be tested. Therefore, you should test the input data using different methods like Equivalent Partitioning and Marginal Value Analysis, …

Example: We have an input field that only allows to enter alphabets, special characters, and numbers from 0 to 1000. Actually there will be a lot of combinations that appear to check, but cannot test. all combinations for each input type. So in this case, we will combine methods for testing instead of testing all combinations.

The testing effort required to test will be very time consuming and it will also affect the progress and cost of the project. Hence, it is always said that a comprehensive test is practically impossible.

4) Test depends on context

Context-dependent testing basically means that the way you test an ecommerce website is different from how you test a commercial app off the selling price. All software is not developed the same. You can use a different approach, method, technique, and type of testing depending on the type of application. For example, testing a banking application is different from testing any e-commerce or advertising application. The risks associated with each type of application are different, so it would be ineffective to use the same method, technique, and test type to test all types of applications.

5) Errors are usually distributed centrally

Usually, the majority of the error focuses on the modules, the main functional components of the system. This also follows the Pareto principle: 80% of the errors are found in 20% of the system’s functionality. If you have successfully identified this, you will focus on finding bugs around the identified area. It is considered as one of the most effective ways to perform effective testing

6) The pesticide paradox

The Pesticide Paradox principle states that if the same set of test cases are performed repeatedly over a period of time, these test suites are not capable enough to identify new bugs in the system. .

To overcome this “pesticide paradox”, this set of test cases needs to be regularly reviewed and revised. If required, a new set of test cases can be added and existing test cases can be deleted if they cannot find any more defects from the system.

7) Misconceptions about “error free”

If the software is fully tested and if no bugs are found prior to release, then we can say that the software is 99% error free. But it is likely that when the application is tested next to the incorrect requirements, identifying vulnerabilities and fixing them within a certain period of time will not be useful as the testing is done on the specification. Wrong, does not apply to customer requests. The lack of defect error means that identifying and correcting errors will not be useful if the application is impractical and cannot meet customer requirements and needs.


Testing is an important element of software development. It can also be a complex operation to structure correctly and in a way that supports maximum efficiency. Due to this complexity, it is always helpful to review processes and principles to ensure you are following best practices.If you are involved in any aspect of software testing, you should take a look. review and fully understand these standards, check that you are complying with these standards within your organization and team, as they will help you to achieve high quality standards and deliver to your customers. Your belief that the software is ready for production.



Share the news now

Source : Viblo