Wednesday, April 15, 2009

Best practices in Software Testing


There are lot of materials available in internet to explain best practices in Software Testing.

Here I am writing only the very essential things for medium level projects based on my experience/view point.

  • We should start our testing activities at beginning of Software development itself.
    Understanding Scope/purpose of the project will help to judge the degree/level of testing required.

  • Testers should go thro' the requirements in detail without missing any points given by the client before writing test cases. If they find any ambiguity in the requirement they should get clarification from the business instead of doing any assumptions.

  • The test cases should be updated immediately once the client gives new requirement or changes the requirements.

  • The test case document should cover all the requirements even if some requirements are non-testable. These non-testable items should be marked as non-testable. Keeping traceability matrix document will helpful to achieve this.

  • The Test case document should help to clearly identify hierarchy/arrangement of test cases. It should have clear approach to arrange test cases if many test cases exist with similar steps. It is not advisable to copy & paste the similar test cases many times, instead we can specify only the additional/different steps.

  • Description of each test case should be written clearly after understanding the context/module of description. Steps should be written only after manually executing them. Expected results should not have any ambiguity. If required, Prerequisite/preconditions should be mentioned.


  • Planning and creating test plan document is essential even for small short-term projects. The test plan document need not contain all the details, but it should contain at least very basic components such as scope,schedule, risks, environments, testers


  • Planning of development/test/staging environments should be done clearly. And it is very important to move the code and maintain version of code in each environment without any ambiguity/confusion. Testers should know which version of code/data is available in each environment


  • Test execution should be done carefully based on the test cases. It is very important to use appropriate test data. It is better to create different set of test data during test case creation itself. The test data should cover valid format,invalid format and boundary values.
    Test result(pass/fail) should be clearly updated for each test case. It is good practice to mention Actual behavior if the test case fails.

    The test results should be communicated to the other parties (developers,business/client) daily even if all the test cases are not executed. In this case, we should add a note to indicate that the test execution is still in progress.

    The test execution summary document/mail should clearly mention date of execution, environment, test name and test result.

  • In case, most of test cases are getting failed continuously, there is no meaning of continuing the execution. Execution should be resumed once after fixing the major issues.


  • It will be nice if we highlight the testing status (pass,fail,yetToStart) in appropriate color. But anyway, just highlighting the test case with appropriate color without specifying status is not a good practice. Because while taking single color printout of the test report, it is difficult to see the status from the color.



  • It is good practice to do some adhoc testing in addition to the test case execution.


  • Clear/proper communication/co-ordination within the Testing team and also with other teams (developers, client/business)is very essential.

  • The bug report should be prepared very clearly with all essential details, especially with the steps/testdata for reproducing the bug. The bug report should help the developers to reproduce the bug and to fix it. Providing screenshots of error message and screenshots of each step will be useful.


  • Doing re-test and small regression test is essential whenever a reported bug is fixed


  • It is not good if we do all the testing manually, as manual testing will take more time/effort and it is difficult to manage, and also it not consistent or repeatable. So it is better to automate the test cases using test tools such as QTP(Quick Test professional). Even we can use simple shell scripts and vbscript to automate some part of the testing.



Updates on September 18, 2010

Based on LinkedIn discussion, I am adding below things also.


  • We need to setup Test Environment almost similar to the production environment. It will be nice even if we have same hardware set up.


  • Never make any assumption whenever communicating with developers and business analysts. Convey your understanding to make sure that your understanding is correct.


  • Make sure to do an impact analysis, take help of developers as needed


  • Prioritizing test cases is must based on application features being changed/ added




eBook for learning Software Testing And QTP

More Articles...

5 comments:

Talent Basket said...

What is your view on hiring cloud sourced testing services like utest?

Rajamanickam Antonimuthu said...

We haven't tried it.
If Anyone is using it, then can share their experience here.

Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...

nice details
if STLC process all carried out then it is better

http://soft-engineering.blogspot.com

einfochips said...

Nice posting,thanks for sharing the nice ideas and thoughts and this information of the software testing is really helpful for us.And this information is really helpful for us.I have to sure bookmark this blog.

product testing practices

Search This Blog