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.
Detecting software bugs before releasing is crucial for ensuring smooth customer experience and adequate security. Much like codecraft, dedication is another of ITIDO’s core values – our guide to delivering quality software. Being dedicated to quality, we apply the industry’s best practices in testing. It also helps us make better product decisions.
Differences in testing for mobile vs web
Before we go into best-practice sharing, here is a general question we frequently hear: are there differences in testing for mobile vs web applications? The short answer is: it depends.
Yes, there are differences if we talk about used tools and cross tests. For example, with cross-browser testing for web apps we are more interested in different browsers (and different browser versions) instead of operating systems. The OS, however, is important for quality assurance (QA) in mobile app projects.
There are no differences in testing, if we talk about test levels, test techniques and best practices. They are all valid for both web and mobile products. In this part 1 of the blog post on testing, we provide a comprehensive list of the best software testing practices to follow in a project.
1. Plan the testing
Developing one’s own test plan and strategy adapted to the application you are developing and fit to your process will ensure quality product.
As a general rule, you should follow:
- the shift-left testing strategy: test early and test often in the software development lifecycle. In Agile you shift your focus and start testing as early as possible instead of testing when coding is completed. Optimal results are achieved when testing activities are planned from the initial start of software development. Bugs get detected earlier which saves time and money and accelerates the delivery of the product. By testing throughout the entire development process (instead just before the launch), you can keep deadlines without compromising on quality.
- the testing pyramid strategy
- Use unit and integration tests: unit testing isolates each module of your app. When a single unit test fails, it is easy to figure out where the problem occurred and how to resolve it fast. Once individual units are tested, test the interfaces between the units/modules and how they interact with each other – integration testing.
- End-to-end tests: perform E2E scenarios executed manually to get a feel for the application and its features. Then automate E2E tests for business critical features.
2. Do sanity and regression testing
Regression testing is used to ensure that changes to an application do not have any unintended consequences. It’s important to select proper tests to your regression test suite in order that they are efficiently executed.
Sanity testing is a subset of regression testing. It’s carried out in short times when there is not enough time to perform a full regression test. Sanity testing is applied to ensure that business critical features are working as expected. Do quick sanity testing then run automated regression tests.
3. Embrace negative testing
Positive testing is about making sure the application works under normal conditions and it’s a must. As a best practice, test plans should include happy and unhappy paths alike. Positive testing represents happy paths where errors result in failed tests. Negative testing refers to unhappy paths where expected errors lead to passed tests. It’s about making sure the application meets expected results under unexpected conditions. By negative testing you improve the security and develop reliable software products.
In part 2 of this blog post series, we discuss the importance of agile techniques, continuous testing and its combination with the shift left approach as well as other best practices. You can check the post here.
MORE FROM OUR BLOG
For Konstantin Iskrov, a kart racer and an engineer, IaC can be a “well-oiled pit stop”
Our colleague Ivaylo Bandrov, Software Engineer at ITIDO talks about how he’s overcoming challenges as Python developer