BEST PRACTICES IN SOFTWARE TESTING, 2 OF 2

An agile mindset with a combination of manual and automation efforts are keys to excellent testing

post-image

In this two-part blog series on testing, Kristina Stoyanova, QA Engineer at ITIDO, sheds some light on some of the industry’s best practices that ITIDO adheres to.

Whether working on a mobile app or building a website, testing is an integral part of the process; it guarantees the end product satisfies the customers’ expectations. This post is a continuation of the best practices sharing that we began in part 1. Here we elaborate on several contemporary methods every QA engineer should know about.

1. Use Agile development techniques

There are three main approaches: TDD, BDD, and ATDD.

  • Test-driven development (TDD): this technique focuses on the implementation of features. Unit tests are written by developers. TDD is test-oriented development practice that prevents the number of bugs as development is performed with a testing mindset. QAs can support developers to write better tests by applying techniques such as equivalence partitioning, and boundary value analysis
  • Behavior-Driven Development (BDD)‍: the difference between BDD and TDD is that BDD focuses on the behavior of the features. Engineers check how the application should work. QAs write tests using a syntax called Gherkin.
  • Acceptance Test-Driven Development (ATDD): the difference between ATDD and TDD is that ATDD focuses on the validation of the requirements. Acceptance tests are written by QAs in Gherkin.

2. Continuous testing and its combination with shift-left

To get faster feedback on potential bugs in a release, continuous testing is a process of executing tests as a part of the delivery pipeline. As such, testing gets automated and integrated in the deployment pipeline with the CI/CD automation tools.

When used together, the shift-left strategy and continuous testing serve to catch bugs early and validate the code often. They reduce the time and effort required to fix bugs and increase the quality of the application being released.

3. Adequate reporting of testing results 

All observations and status of the testing must be well documented. Bug reporting should include bug description, steps to reproduce, screenshots/videos, expected vs. actual results, environment and logs so the root cause can be easily identified. It is a good practice to highlight whether a given issue is related to a particular OS or browser/browser version. All test case management tools provide bug templates that cover the basic test details and add more information. Moreover, these tools automatically generate test reports with passed and failed tests.

4. Combine test automation and manual testing

Apply this type of testing which is the most relevant for each stage of your application. For example, test unstable features manually while they are under active development, then automate stable features which are business critical

For mobile apps run automated cross-device tests for a wide range of sizes, screen resolutions, and OS but also execute manual tests on a real device and give feedback.

For web apps run automated cross-browser tests for the most popular browsers and their latest versions. 

Generally any tests that are performed repeatedly should be automated, e.g. regression tests.

To ensure stability and reliability of your product, don’t forget to continuously improve testing processes. As discussed earlier, keep thinking about testing from the outset of every software development project.

MORE FROM OUR BLOG

Card image cap
April, 2024

WHEN FEATURE PRIORITIZATION IS BIASED

Deyan Nikolov, Software Services Consultant, sheds light on the 5th of six major red flags of a doomed MVP

Card image cap
April, 2024

MY ITIDO JOURNEY: EKATERINA

Ekaterina Slavcheva, Solution Architect at ITIDO talks about working with one of the largest Telecoms and balancing between work and her personal life.

Card image cap
February, 2024

THE RISE OF 5G AND ITS IMPACT ON SOFTWARE

Key 5G features and new use cases call for modernization of telecom software