Header Ads

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

Performing informal testing (unplanned / undocumented testing) can uncover important defects that are hidden from formal ways, which are supported by intuition and expertise of the tester. If the same tests are repeated again and again not fetch new defects this leads to pesticide paradox and therefore informal testing is required.


Communication

Software development is a collaborative process where different teams with varied experience and expertise communicate with each other towards common goal. Having effective communication within team and with internal and external stakeholders is paramount. During testing one can consider following points

  • 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

Knowledge is most important asset the tester has accumulated over time. As it is precious many individuals are reluctant to share it with others. However organisation should foster the culture of knowledge sharing as it not only makes the team more competent and efficient but enables businesses to innovate and compound the knowledge as an asset and create culture of intellect and synergy in the organization.



Execution Efficiency

Determining the execution frequency and quantum of execution. Executing all the tests or executing subset of tests depending on state of software being developed. 
  • 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

Pair Testing is the term influenced by Pair Programming where two testers test same features. One tester executes the tests other verifies it. 
  • 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

Conclusion

No mater how much we automate. The real outcome will have impact if we try and optimize the whole testing processes and create good culture for test engineers in organisation. This will not only improve the quality of products and efficiencies of testing processes but also make testing a fun, so that testing is not perceived as boring and mundane rather fun inducing, knowledge driven and interesting.




No comments

automationglance.com. Powered by Blogger.