Monday, April 11, 2022

The choices you make define testing efficacy

 Would you be willing to pay more for the last-minute execution of plans just because you didn’t chalk out a few details in advance? It hurts to shell out extra for something that could have been easily well planned in advance. Planning is an indispensable part of our daily lives. The same is applicable when it comes to software development and testing. Planning is the first step forward and selecting the right approach makes all the difference. (what is manual testing)

Testing is an integral part of software development and planning it well is half the battle won. The same is deemed true for test case designing and execution, which are the founding stones of software testing.

A test case is a well-defined specification of inputs, test procedure, test conditions, and expected output. 

Every test case maps to a business requirement and every requirement can have multiple test cases corresponding to it. The more complex the requirement, the higher is the number of test cases corresponding to it. But, is it mandatory to execute every single test case designed to test a functionality? Not really!! The key is to find the right ones, especially when the time is of the essence and resources are scarce or limited

Test case prioritization

The pace at which development is done in the agile methodology, testers are usually left with a limited amount of time in the sprint to go through an entire round of testing. It calls for choosing and executing the right test cases to conduct and effective testing. To that effect, the testing team needs to employ a proper test execution strategy based on two key parameters – severity and priority

Priority is essentially the order in which defect should be fixed and deals with scheduling.

Severity is the degree of impact on the functionality of the end product.

The following diagram represents defect severity and priority as the two key parameters. Based on the weightage of priority and severity, the right test cases are identified and marked for execution.

Test case prioritization
Test caseExplanationExample
CriticalThe test cases that need to be executed first are the ones attached to high priority and high severity.User’s inability to log in to a system. 
Everything stands still if a user cannot log in thus making it critical to fix it first.
HighThese are test cases with low priority but with high severity. “Change Password” link in the application not working properly.
This is a rarely used feature so the low frequency of accessing this link makes a low priority.But a functionality not working makes it a high severity.
MediumMedium level test cases determine that the crucial information available on the product is correctly conveyed.Incorrect logo/spellings of an organization on every page of a website.
This is a high priority because it is a showcase of the website. However, it is not impacting any functionality thus ranking lower on the severity meter.
LowThese test cases will not impact the functionality or the quality of the product to be released and need not necessarily be executed in case of a time crunch.Minor UI mistakes like color and font.

Identifying the right test cases and test approach

Identifying the right test cases and test approach

Multiple test cases can correspond to a single requirement, resulting in a big test case repository. Picking which ones to execute, at what stage, is a herculean task. 

Test scripts contain multiple steps sometimes running into many lines of code. A prudent and wise approach is to adopt modularity from the beginning itself. It helps in executing specific sections/ test modules, instead of a large script. 

Also, it is important to check whether all the identified test cases should be executed or just a subset needs to be considered. It largely depends on the stage at which the testing is being conducted.

The following figure shows the number of test cases that should be ideally executed depending on the stage of development. 

Assuming, Timeline for production = 2 weeks and Number of test cases = 1000

Note: These are indicative numbers and can vary based on the application under test.

graph

At the development stage, execute at least 100 automated test cases for the affected code, several times a day.  

At the integration stage, which may happen maybe twice or thrice a week, approximately 300 test cases may be executed. It is a good idea to consider cases impacting the security posture and overall performance. At this stage, using a healthy mix of manual testing and automated test cases is a preferred approach.

At deployment, a complete regression testing cycle should be conducted with all the testcases, 1000 test cases in this example.

 Needless to say, when the timeline is tight, then pick up the critical and high-impact test cases. For more information: Manual Testing

Tuesday, April 5, 2022

Exploratory Testing: The Voyage To Find Undiscovered Bugs

 

Software testing – The final frontier, in the voyage of software development

The journey of software development is riddled with various quests, a few unknown territories, multiple surprises, but a well-chartered course of action at the beginning helps in conquering all that comes your way.

Software testing is the final frontier in the voyage of software development. Smart test planning at the outset of any project helps in netting most of the potential issues. However, there might be some unexpected and unknown errors that may escape the net. But as Captain James T. Kirk would say “There’s no such thing as the Unknown, only things temporarily hidden.”

software

This is where exploratory testing comes to the rescue.

Exploratory testing in software testing is a hands-on approach of testing that involves learning by discovery, test schematizing based on learning, and test execution. It helps in discovering new bugs and uncovering hidden segments of code that may be harboring a dormant bug. Including exploratory testing as part of the test planning may prevent unexpected issues at the time of deployment.

This article takes you through the voyage of software testing and will help you understand the importance of exploratory testing.

exploratory-testing

Domain understanding is one of the most obvious criteria before the commencement of test planning. You would not want to embark on a journey without getting basic facts and parameters right.

fact-1

Get domain experts on board along with business and technical teams. Their expertise will help you in charting the path for your voyage. You can go through our earlier analysis on what all skills are required to be a “good” explorer aka exploratory tester, by clicking here

Here is a quick recap in case you are in a rush. A good explorer crew needs to have the collective abilities of:

Explorer

Navigating through the different galactic systems of testing

Once your testing crew is in order, the journey through the stars becomes easier to navigate. A voyager encounters many star systems and the approach to traverse through them may not be common. It will all depend on the kind of galactic system that is being navigated. Similarly, multiple approaches can be taken to have good test coverage. However, multi-channel execution has a clear advantage when it comes to good test coverage. It involves,

But is this enough? In all likelihood, a bug might take you by surprise and hit your ship, hurtling you off the course. And that is precisely why exploratory testing is needed, to eliminate the surprises.

Exploratory testing: Discover the unknown (or hidden)

During exploratory testing, your testing crew will need to explore the application and learn about its functionalities by discovery and learning method. However, they have to adhere to the exploratory charter that has goals and boundaries for testing defined.

fact-2

Honing all your exploratory skills and exploring the unknown and finding what is hidden is a big challenge, but it can be done. 

Exploratory testing gives an extra edge to software testing by complementing scripted testing by venturing into potentially high-risk segments. Read for more : Exploratory Testing

If you are interested in learning more about Webomates’ CQ service please click here and schedule a demo, or reach out to us at info@webomates.com.

Traceability Matrix: Ensuring Quality and Compliance in Software Testing

  Introduction In the aspect of software testing, thoroughness in that all aspects have been covered and none of the important aspects has b...