You know it’s vital “Quality Assurance (QA)”, I know it’s vital, so let’s move on and dive right into our recipe for success. True quality comes from quality minded people, and as such, we’ve subscribed to a different angle towards QA, one that differs from the traditional practices.
Approach
Traditional Quality Assurance often involves extensive work and coding before any testing is actually done. This results in finding more bugs in the software closer to the delivery date. At mobileLIVE, our QA involves Test Automation coupled with Continuous Integration from the start. This approach and quality assurance process uncover the majority of bugs at the beginning of the software development cycle and fixes them as the cycle progresses. The result is fewer bugs to reconcile at the end of the project, which in turn, allows for seamless and easy delivery.
Whether you are working in an agile environment or taking a waterfall approach, the overall strategy for high-quality QA remains the same:
Best Practices
Our approach to QA is what truly sets us apart in an already dense development landscape and we would like to share with you a comprehensive list of best practices that have proven effective time and time again:
Focus on the User Experience: Testing at all levels of the project is crucial, but the most important thing to consider is the user experience. If the UX is bad, it inevitably means the quality is not at par. Although this will likely result in changes during earlier levels of development, the user experience must always be at the forefront.
Automation and Continuous Integration: Automation is vital because it provides fast feedback, enabling continuous integration – a crucial component of the agile methodology. Automation is also key to reducing costs and improving the efficiency of your team; which is one of the main reasons why QA managers must educate themselves and be willing to implement automation practices.
Test Coverage and Code Coverage: Many quality assurance testers and QA engineers talk a lot about “test coverage,” which gives a good general picture of the quality of the application. However, to achieve true quality, both test cases and code coverage analysis must be considered. For example, even if you achieve 100% test coverage, you need to still aim for at least 90% function code coverage to ensure the best results.
The Shift-Left Approach: Typically, testing starts once the coding phase is complete. However, for optimal quality in an agile methodology, you need to shift the focus and begin monitoring and testing right from the inception of the project. This ensures that bugs are detected sooner, which not only saves time and money but also helps ensure a good relationship with developers on the team, accelerates the delivery of the product, and allows for greater test coverage.
Smart Testing: Complete and comprehensive testing can sometimes present a challenge since many teams may not have the time or resources to go through every possible combination of cases. However, you should be smart in how and what you test. This means, communicating with the developer to find small test cases that will uncover the greatest number of bugs.
Bug Prevention: QA engineers are trained to catch bugs; however, a resourceful QA engineer will also think about how to prevent them in the first place. Traditional QA starts testing at the UI level, but an agile method starts with unit and functional testing and then moves to the UI level. This approach prevents bugs from entering higher levels of development which can cause bigger problems later on and likely delay delivery.
Quality Over Quantity: Focus on major critical bugs and glitches initially rather than several smaller ones.
Agile Testing Process and Approach
Agile is undoubtedly the preferred software development methodology for today’s developers. Agile testing uses the same principles to encompass all elements of software testing from unit to system testing. We recommend using The Four Quadrants of Agile Testing in order to not only meet but exceed quality standards in all aspects of a project.
The Importance of Test Automation
At mobileLIVE, we practice a culture of automation and thus believe that every development team should be automating all tests when possible. There is no excuse for not automating these tests, as in most cases, doing them manually will cause considerable trouble, lead to additional costs, and create untimely delays.
Regardless of how thorough your manual testing is, human error will always be a factor, which is why automating all possible tests is the best way to ensure your results meet and exceed the quality standards you were hoping to achieve.
The Value of Continuous Integration
In addition to automating all possible tests, Quality Assurance managers must also ensure that all feedback is subject to continuous integration. One of the major benefits of automated QA is the fact that feedback is available immediately, which is why implementing that feedback and fixing bugs at all stages of the development cycle is imperative. Build Verification Tests (BVT), and Smoke Tests should be built into every stage of the project as they are the most comprehensive way to detect problems early on and prevent issues in future builds.
The following diagram illustrates Continuous Integration flow from Code Check into Operational Readiness:
Key Takeaways
Most would admit that agile development is the future; however, in order to exceed client expectations and improve the user experience, regardless of what method you choose, extensive quality assurance in software engineering isn’t a “nice to have,” it’s imperative. As the development landscape grows denser, our approach with its focus on automation, continuous integration, and the other best practices mentioned earlier will help you to maintain and surpass quality, ensure the highest satisfaction upon delivery, and provide the greatest experience for the user, as well as your development team, as possible.
How do you approach QA? We would love to hear it!