Testing Guidelines for Novices as well as Experts

December 17, 2012 Kapil

Software testing is a critical component of the software engineering process. It is an element of software quality assurance and can be described as a process of running a program in such a manner as to uncover as many errors as possible.

The process of software testing involves creating test cases to break "the system" but before this a software engineer must understand the basic principles that guide software testing.

Experts of the software testing industry have prescribed guidelines that form an excellent starting point for any tester may be a novice or an expert. Testers can keep them in mind while attempting any testing exercise.

1) Test according to the user requirements: Testing should be based on user requirements. This is to ensure that we uncover all defects that might cause the program or system to fail to meet the client's requirements.

2) Avoid redundant tests: Remember that our testing time and resources are limited.

3) Don’t try to test everything: It is virtually impossible to test everything. Reasons being exhaustive testing of all possible scenarios are just not feasible. This happens due to extremely large number of variables affecting the system and equally large number of paths a program flow can take.

4) Deploy effective resources for testing: This represents use of the most suitable tools, procedures and individuals to conduct the tests. The test team should use tools that they are confident and familiar with. Testing procedures should be clearly defined. Testing personnel may be a technical group of people independent of the developers.

5) Plan the tests early: Test planning should be done earlier during SDLC. This is because test planning can begin independently of the coding and as soon as the client requirements are set.

6) Begin the testing early: Try to begin the testing right from the moment, requirements analysis phase gets over to avoid defect migration.

7) Plan the tests for extreme conditions: Testing effort must be directed towards unexpected and invalid input along with valid inputs as well. Our endeavour is to ensure that our program produces correct messages when an invalid test is encountered and should generate correct results when the test is valid.

8) Identify & Isolate the problem areas: Remember that the chances of large number of defects in a module or group of modules are directly proportional to the number of errors already found.

9) Begin testing from the module level: The focus of testing should be concentrated on the smallest programming units first and then expand to other parts of the system.

10) Entrust the testing jobs to an independent agency: The individuals involved in the software development should not perform Testing. This is due to the simple reason that developers could psychologically tend to overlook weaknesses in their own creation. Generally the third party testing or dedicated test engineers prove to be more effective.

11) Assign testing to the best personnel: Remember that testing requires great deal of creativity and responsibility. Hence personnel with best track record must be entrusted the job of designing, implementing, and analysis of test cases, test data & the test results.

12) Don’t test with pessimism: Never begin your testing effort with an assumption that everything is in order & you are not likely to find any error in it.

13) Test with sole objective of finding maximum errors: Remember that the intent of testing is to execute the software application with a motive of uncovering errors & that too maximum in numbers.

14) Try not to change the software during test: While you are implementing the set of test cases designed for the purpose, try not to make changes during such period.

15) Importance of proper documentation: Document all the test cases & the results of testing as per software test standards & preferably it must be controlled by some configuration management system. We must document all our expectations of the test results even if such expectations are difficult to achieve.

16) Test with a destructive attitude: Testing is effective when done with a destructive attitude or an assumption that everything is wrong.

17) Try to test maximum possible requirements: Try to cover functional & non functional requirements of the software application under the scope of your testing.

18) Try to use Automation Tools: Try to support your testing by automated testing tools to the maximum possible extent.

19) Special care for testing critical Software: Full testing right from requirements phase till acceptance testing must be done for critical software applications.

20) Test Analysis: Quantitative assessment of tests & their results must be done thoroughly.


Leave a Reply

Proudly powered by Kapil Saxena.