Can you QA test this? …
… is the first question an agile developer should ask of them self.
Agile development is a continuous, flexible feedback loop driven by collaboration, adaptive planning, dynamic development, early delivery, and constant improvement. This continuous integration approach to development has a dark side – the potential to continuously integrate defects.
Successful agile development requires testing as a strategic component of each project: Agile development requires agile testing. As code architects and engineers, developers are best qualified to identify areas of potential risks. Developers are critical in creating and implementing an efficient, effective testing strategy.
Developers are the first line of defense in detecting and eradicating defects. Applying best practices during coding reduces the number of introduced errors. Catching and correcting defects before they are introduced into a distributed app is far more productive than pinpointing and fixing a multitude of problems days or hours before delivery deadlines.
Testing on developer environment simulators is the first means of testing an app, however, it does not expose all defects. Simulators do not represent the actual device or user events encountered in real device use. Actual devices are the only means to test real user experience – have you ever seen an end-user run their app on a simulator?
After passing initial testing on the development simulator, the app is ready to be built on the continuous integration (CI) environment. Builds deployed to devices from the developer environment may not exhibit defects resulting from different CI configurations. While CI performs testing on various levels, developers should verify and validate CI builds prior to passing apps to third persons for manual testing or automated QA frameworks outside the CI.
Developers using cross-platform solutions, such as those used by Shockoe, can often decrease development time, testing complexity, and costs. Today’s multitude of device chipsets, memory, display, sensors, OS versions, OEM and carrier modifications, and third party software dependencies can make “test often” overwhelming, expensive, and dramatically reduces the time a developer can spend developing. Shockoe employs tools to streamline the seemingly endless possibilities of testing required to assure stable products and heightened user experience.
Automated testing on actual devices can be performed in-house and by cloud-based services. These automated testing frameworks increase the number of tests that can be run in a time frame, reduce the time it takes to expose defects, and shortens overall time to market. Automated testing frameworks do not make errors. Developers should witness the first few automated passes, as they are most familiar with the product’s performance expectations and nuances.
Human testing comes with long time cycles, high costs, and is prone to errors. While automated testing solves these human detriments, they do not accurately test for design issues and overall user interaction experience. Whether testing in development simulators, performing manual tests on CI builds, or watching the first few passes of an automated test, only a human can test for human experience factors.
Developers produce the code that is the app. They are integral to the testing processes at all levels of production. Before a developer asks, “Can someone QA test this?” they should employ development best practices, testing techniques, and tools to ensure those “QA-ing” find few, if any defects.