Guiding Principles for Effective Software Testing

Categories: EngineeringScience

Abstract

Testing is a critical stage and complex activity in software development life cycle (SDLC) and to make sure it is done successfully there are many principles to follow. These principles are considered as the general rules or the main guidelines for the testing team. These principles have been established over the years.

The conclusion of these principles is admitting that no system is 100% error free and you cannot execute all the test cases. A main principle also is starting testing stage early to easily correct the defects.

There is also a main point we should take it into account while testing, techniques of testing depends on the nature of application. Applying and considering these principles leads to the maximum benefit of testing.

Introduction

What is testing

Software testing is an important stage in software development life cycle and it is the process of identifying the correctness, completeness and the quality of the software by analyzing it. It also means executing set of activities in a systematic way to detect any errors or defects in the system and to find differences between the existing and the required so finally we satisfy the specified requirements.

Get quality help now
Marrie pro writer
Marrie pro writer
checked Verified writer

Proficient in: Engineering

star star star star 5 (204)

“ She followed all my directions. It was really easy to contact her and respond very fast as well. ”

avatar avatar avatar
+84 relevant experts are online
Hire writer

The following figure shows the (SDLC).

Testing objectives

The testing objective is first to test the code, in which there is high probability to find errors. The objective also shows and makes sure that the system works directly according to the software requirements specifications (SRS). Basically the successful test is the one that detects all the undiscovered errors yet.

Get to Know The Price Estimate For Your Paper
Topic
Number of pages
Email Invalid email

By clicking “Check Writers’ Offers”, you agree to our terms of service and privacy policy. We’ll occasionally send you promo and account related email

"You must agree to out terms of services and privacy policy"
Write my paper

You won’t be charged yet!

Testing Principles

Testing is a complex process and it is important to achieve the optimal results without deviating from the main objective. We had to establish some principles which considered as guidelines for the testing team to help them utilizing their time and effort to make this process effective as much as possible. These principles were suggested over 40 years ago to make sure the testing team is going in the right way and following the right methodology.

Testing Principles

To maximize the effectiveness of the testing stage, first, use good test design techniques which are all based on certain testing principles and there are seven main principles will be discussed in this chapter

Testing shows presence of defects:

The main objective of testing is to find one or more defects so, the process of testing is designed in a way to find as much as possible defects. Testing reduces the probability of defects as we stated before, but if it did not find defects it does not mean that there is no defects at all or the system is 100% bug free because the main idea in this principle is the presence of defects not absence.

Exhaustive testing is impossible:

Exhaustive testing is an approach of testing in which we test all possible values for all inputs combined with valid and invalid preconditions. This principle means we cannot test all the test cases because this takes much effort, cost and time and the project timelines may not allow testing many number of combinations. We consider each test is a sample and the test effort must be controlled, considering risks and priorities.

For example suppose there is an input field which accepts alphabets, special characters, and numbers from 0 to 1000. Imagine how many combinations would appear for testing, it is not possible to test all combinations for each input. For that we say that exhaustive testing is not possible.

Early testing:

testing activities must start early as much as possible in the software developing life cycle(SDLC) to focus on specific objectives which means finding defects early. For example, the requirements document is the base of acceptance test, so we can start testing whenever this requirement document is available and ready.

The techniques and methods of early testing shows that defects in the system specifications surely effects on the requirement document if they are not found and corrected and so on for the other next stages in SDLC. The other benefit of early testing is it is cheaper to correct a defect in the early stages than later stages and the following figure and table shows how delaying testing causes much loss of money.

The stage in which error is found

Project Cost Breakdown
Requirements Coding Program Testing System Testing User Acceptance Test Live Running
$1 $10 $100 $1,000 $10,000 $100,000

Table 2.1

The following figure shows how testing is done parallel with other stages of (SDLC) as in V-model.

Finally we have to admit that nothing is better than starting testing early.

Defect clustering:

The defects in the system most probably are not distributed, they are clustered. In most projects and systems small modules can have the large percentage of defects. According to Pareto principle which is applied to optimization problems and efforts, 80% of defects come from only 20% of modules. This high percentage comes from many reasons like code complexity which is related to module complexity, system complexity and inexperienced developers.

Developers mustn’t only focus on that 80% of modules of course they have the most number of bugs but the other 20% also may have defects. Finally if the same test is repeated over and over again there will be no defects.

The following figure shows some modules being tested for banking applications, most defects are in the “overdraft” module.

Pesticide paradox:

Using the same pesticide to eradicate insects during farming with time going by leads the insects to develop resistance to the pesticide so it will not be effective on insects. The same happens in software testing, if there is module needs to be tested to find out defects, with testing team efforts and iterations the system will be improved and the number of defects increases. But at some point and with repeating the same test cases over and over again these test cases are not able enough to find some defects.

To help solving this problem there are two methods which testing team can follow:

  • The first method: testers write new set of test cases which will focus on different modules in which they may not focused on in the earlier test, by this way more defects may be discovered.
  • The second method: testers prepare new test cases and add them to the existing ones. Old test cases could be updated or even deleted if there were useful and are not able to find new defects. Using this method increases the total number of test cases and results in more efforts and time required for execution, which mainly effects on the project timeline and budget.

Testing is context dependent:

Software is used in many domains for example banking, medical, travelling, shopping and son on and each domain has its applications. Due to the difference of domains and its usage environment there must be difference in requirements, functionalities techniques and also testing purpose.

For example a website where information can be simply viewed will be tested in a different way to an E-commerce site, where people can by things using credit cards. We should focus on security tests so the password and the data of the user will be safe and not easily hacked.

Absence of errors:

If the test is done and there is no defects then we say it is 99% defect free system, but if this test was done according to wrong requirements that means however defects are found and however fixing them is not enough and that will not help improving the performance of the system because you are working on requirements different from user’s requirements.

The system must fit the business needs or it will be useless so it is very important to clearly understand the user’s requirements to execute the right test because different test means different techniques, methods and approaches. For example testing the system of any shop is different from testing the system of ATM.

So finally we can say that understanding the right requirements leads to execute the right test which makes the performance the best.

Summary

Finally and after discussing the above principles we find out that testing is not an easy or flexible stage at all. It requires specific methodology and guidelines to get the maximum profit and to provide all users requirements. Tests should be planned long before testing begins. After the requirements stage is completed, test planning should begin so testing can be started early as soon as possible. Also Testing should begin “in the small” and progress toward testing “in the large.”

At first tests should generally focus on individual components and while testing progresses, the focus is shifted to find errors in integrated clusters of components and finally in the entire system. The most important point which has high impact on the effectiveness of testing is the software engineer who has created the system is not the best person to conduct all tests for the software because the independent tester will drive the system into quality.

References

  1. Software Engineering and Testing by B.B. Agarwal, M. Gupta& S. P. Tayal
  2. A Study Guide to the ISTQB Foundation Level 2018 Syllabus: Test Techniques by Adam Roman
  3.  Foundations of Software Testing: ISTQB Certification by Dorothy Graham, Erik Van Veenendaal, Isabel Evans
  4. Software Testing Foundations, 4th Edition, 4th Editionby Hans Schaefer; TiloLinz; AndreasSpillner Published by Rocky Nook, 2014
  5. Software Testing - An ISTQB-BCS Certified Tester Foundation guide 3rd edition by Angelina; Geoff; Brian; Peter Published by BCS Learning & Development Limited, 2015
Updated: Feb 19, 2024
Cite this page

Guiding Principles for Effective Software Testing. (2024, Feb 19). Retrieved from https://studymoose.com/document/guiding-principles-for-effective-software-testing

Live chat  with support 24/7

👋 Hi! I’m your smart assistant Amy!

Don’t know where to start? Type your requirements and I’ll connect you to an academic expert within 3 minutes.

get help with your assignment