Optimizing the Software Testing Practices
Introduction
Automated Software Testing is the one of the primary way to optimize the software testing by reducing overall effort and add value to efficiency to carrying out software testing tasks. The whole testing life cycle involves many tasks other than that carried out by test automation tools. Ideally, for a typical software project we spend 25% time for Analysis, 50% time for Development and remaining 25% time for Testing with 10% variation. Today we look at optimizing the software testing tasks other than automated testing.
Prioritizing Tasks
One of the way to optimize the testing is by carrying out parallel tasks and prioritizing important tasks. We as human beings generally not accustomed to work in parallel mode. while planning the testing life cycle, we need to identify and plan tasks that can be carried out parallely and carefully prioritizing the tasks. We need to come up with tasks that can be done parallelly and tasks that cannot be done parallely, here the goal is not to over work but to marshall the available time and resources.
- Keeping track of tasks and collecting data that can be useful for upcoming sprints.
- Strategizing and prioritizing tasks for current and upcoming sprints.
- Preparing Test Cases, Test Data and Test Environments and constantly improving them.
- Keeping track of positive and negative incidents.
- Getting rid of redundant tasks
Implementing Test Case Design
Preparing Test Cases are the foundation of Software Testing practices. Quality time spent is on preparing Test Cases and Test Data. We need to carefully understand the underlying software requirements and behaviour (software design) to successfully write new test cases that could cover all requirements. To enable efficient use of time and resources to write new test cases test engineers should take advantage of test case design techniques. Few commonly used test design techniques are listed below:
- Boundary Value Analysis (BVA)
- Equivalence Partitioning (EP)
- Decision Table Testing
- State Transition Diagrams
- Use Case Testing
Informal Testing
Communication
- Having clarity in writing the test cases and test execution report without any duplication and to maintain them in organised unambiguous manner.
- Writing detailed bug report and inserting enough evidence and steps that developer does not have to waste his valuable time in getting back and asking for more details.
- Maintaining correct status of on going activities all the time.
- Having periodic retrospective meetings to fine tune testing processes, to appreciate peers and implement best practices.
Knowledge Sharing
Execution Efficiency
- Performing impact analysis by determining the changes in code and executing subset of all tests
- Parallely executing automated tests
- Coming up with new strategies to execute and find defects
- Coming up with new strategies to effectively use automation
- Maintaining a checklist for testing and to ensure all testing tasks are completed
Pair Testing
- Ensures nothing is missed due to oversight
- Saves overall time of testing by improving quality of test validations
- Improves communication and can complement each other weaknesses with counterparts strength
- Induces fun in the testing activities
Post a Comment