A best practice is a way of doing things which leads to good and expected results when it is applied properly. Testing is a most important phases in software development life cycle. It is the only way to understand if the project is on way to be successful or it is going to be a failure.
Different Levels of Software Testing:
The software testing can be performed at different levels. Some of the different testing levels are:
1. Unit Tests: These tests are executed by the developer to validate the functions developed by him. These sets of test cases are executed for limited set of data.
2. Integration Tests: These tests are executed by the developer who is either a part of the development team or quality team and is working closely with the development team. These tests are generally performed to test full set of features of the application. These can be white box tests.
3. System Tests: These tests are run to check the complete scenarios of the software without interfering in the underlying components. These are black box tests.
4. Acceptance Tests: These tests are performed to check the acceptance of the software according to the business needs and the users who are going to use it regularly.
Software Testing Best Practices:
Some of the testing best practices include:
1. Test Case Creation: The test case creation process starts when the requirements are approved and frozen. While the coding is in process, the test case preparation is started and completed so that there is no hustle during the QA execution. When writing test cases, use test case type field to understand the type of test case. For example, negative test cases, positive test cases, regression test cases and smoke test cases.
2. Prepare regression test cases list: Whenever there comes a new build of the software, there is always a chance that the old functions of the software might me impacted. So it is always recommended to have a regression test cases list prepared so as to check the existing functionality is not hampered. Before the new release is handed over to the QA team, the QA team should update the existing test cases to ensure high quality testing. Practices to be followed during new release:
- The smoke tests for the existing functionality should be cleared and new smoke tests be prepared for the current release.
- The regression test cases should be updated. If the old test cases have become obsolete then mark those test cases as obsolete. Add new test cases to it like if some new function was added in previous release, it should be regressed in current release.
3. Smoke Testing: Smoke tests are test cases which cover the main areas of the software being tested. These are about 20 -30 test cases. These are basic test cases which should work whenever new release is prepared. The smoke test should pass in order to proceed with deep testing. So in case the smoke tests fail the QA team returns the build to the development team. Best practices for smoke testing would include:- Preparing a smoke test set and handing over this test set to the team who is merging the code
The smoke tests should be reviewed to meet the following:
- The smoke tests should cover every requirement of the software.
- The smoke tests should not be ambiguous
- There should not be any missing function not covered in smoke test
- The smoke tests should be an overview /major functions. It should cover any in depth functionality.
- The smoke tests should not be large in number.
4. Positive Testing and Negative Testing: Positive Testing is type of testing in which the testing is done to check the software is meeting the requirements through positive scenarios. The test cases are created based on the requirements given.
Negative Testing is performed to check the software for negative scenarios, to break the code. The tester puts error values in the application to be tested. Some of the negatives inputs include. Putting in wrong date formats, putting decimals, colons in number formats.
5. Performance Testing: Performance Test Cases are prepared to check the performance of the system. How the system responds to different type’s volume of load is check under performance testing. Performance testing is divided into 3 parts:
- Performance testing before the release of product and after the release of the product: In this case we can determine the release has been faster or slower.
- The tester must reboot its machine and clear the cache before starting the performance testing.
- Perform testing with different types of accounts for each part of the application. Some amounts should have large data and some small data.
6. Test Case Preparation and Review: The test case should contain all the steps of execute the test. It should be easily understood by any person on test cases. Some best practices for test case creation are:
- The test cases should be mapped with the requirements to create a better understanding of the test case.
- There should be a test case name, number, requirement and description of test case.
- Log in information should always be written.
- Write the test case type eg negative test case, positive test case.
When all the test cases are completed the review meeting should be done. In review of the test cases, the tester discusses the test cases along with the requirements with the team. The test cases are check for the adequacy of the information, it should be understood by all the team members and there is no missing test case. If there is any addition or deletion of a test case it is marked for modification. Once all the test cases are reviewed the document is marked as Test Cases Reviewed.
7. User Acceptance Testing: When the application is handed over to the client, entire documentation should be made explaining the method of installation, any open defects, various roles etc.
Best Practices of Testing Methods:
Analytical Risk Based Strategies: When testing an application always
- Perform a risk analysis to identify the risk items and their impact on the application
- With determination of the level of risk we can identify the order of test execution and test coverage.
Risk based Testing comes with a lot of benefits:
- It provides us a benefit of having a risk bases test planning and estimation
- It helps in finding out way to deal with the project priorities and schedules
- With risk based testing we can find the bugs on high priority order.
- The stakeholder get aligned to the test coverage using this technique
- It is a very planned and methodical way to overcome the challenges faced in a project development.
The Test Objective should be clear: The test objectives of any project should be clear. The organisation should have clear goals and objectives which are metric based to have a quality testing. There are two types of test objective: Internal and External. Internal objectives support the external objectives. The external test objectives include:
- Reduce the risk in quality to a level which is acceptable.
- Finding of important defects.
- Providing important information as required in the project.
- Creating a confidence in the release of the product
If the test objectives are quite clear it is very beneficial for the organisation as:
- It gives us knowledge on the areas for improvement of the process
- The stakeholders are well aware of the expectations and are on the same level with the organisation.
- It gives us the clear picture on the success of the project.
Improvement in the test process continually: The organisation should strive for continual improvement in test process. It should set goals for improvement of external and internal test objectives. The organisation should use certain strategies to achieve the goals. Plans like Pareto analysis should be adopted. Checking of the progress towards achievement of goals should be done. The test improvement has many benefits:
- It increases the efficiency of testing activities.
- It aligns the test processes with other organisational activities.
- It improves the testing value to the organisation.
Testing teams should be trained and certified: Testing is an area of specialty. The testing staff should be trained and certified. The organisations should have certification criteria for find out the minimum qualification needed for the testing positions. The testers should be ISTQB certified to raise the standard of testing process. The certified and trained testing teams have many benefits:
- The tester has more ability, skill set and confidence level is also high.
- The testing team is more efficient focused on project goals.
- It improves standard of testing for all the projects.
- The organisation with certified testers has grater achievement in its goals.
Over to you:
Every organisation should evaluate the best practices of testing and analyse what practices should be followed in testing. The organisation should set long term goals and make a long term plan. Then follow the long term plan to achieve its goals.