I was thinking about product testing that can be performed more effectively. And here are 10 guidelines that I come up with for effective software testing. These guidelines are of course applicable once product arrives for testing. :)
- Get the product’s domain knowledge E.g. if product under test is a web application then tester should know about web server, CGI, etc. If product under test supports Solaris zones then tester should know types of zones and how they work etc. This will help tester come up with different test cases.
- Ensure that tester has all insights of test-bed. This will ensure that tester understands the environment where product will be tested. Sometimes changing system parameters (on test-bed) can severely affect product.
- Define Test plan for ultimate goal of testing. E.g. test plan should state clearly if tests requires white box testing along with black box testing.
- It is also important that test plan states overall scope of test cycle (I am not covering all granularities of test plan). Scope should cover different types of testing that can be performed over entire product testing cycle.
- Develop test cases to cover all functionality of product under test. It is always helpful to get inputs from developer who has developed the feature while coming up with different test cases. Ensure that negative test cases are also covered along functional test cases. E.g. In case of network application what if there is loss in network connection? Does application crash due to sudden network disruptions?
- Never ignore security test cases.
- Keep all matrices in hand to measure continued progress of software testing. This should not be the only task of Test Leads or Managers. A tester should measure his individual performance to fine tune his performance. Graphical representation of these matrices using simple tools such as excel will provide a helpful insight.
- Automate as many test cases as possible if feature is well stabilized. Freeze on automation tool well in advance that will be used by all team members. It will be helpful to include name of automation tool in test plan itself. Tester should not try to automate a feature which is under development ( Not valid in case of unit testing). Due to constant changes during development of a particular feature, it wouldn’t make any sense to automate test cases and waste valuable time.
- While executing performance testing cycle, get all the numbers in advance for a product under test. E.g. during load testing what will be the maximum load (e.g. number of users allowed) that application can handle, should be known in advance. During stress testing, ensure that exact breaking point of application is noted.
- Compatibility testing is also important and should be aligned with environment where customer will possibly deploy the product.
Though above guidelines do not cover each and every aspect of software testing, still it provides broad picture of what needs to be done. Do you have any more inputs to add then let everyone know in comments below.