Robust Hybrid App Development Practices
Automated testing and continuous integration are important pieces of an efficient, dependable agile software development workflow. Building an application without a robust test suite is like building a house without scaffolding. You will save time and money up front, only to have progress grind to a halt as continued work becomes increasingly likely to cause damage that costs even more to monitor and fix.
The foundation of a testing plan is having good coverage of the code base with unit tests and integration tests. It is important to note that, while an admirable ideal, a 100% coverage target is unlikely to be a good investment for most projects; there are diminishing returns.
Our clients absolutely appreciate the importance of investing in automated tests and see the ROI that is generated as we’re able to consistently develop new functionality without being slowed down by bug fix cycles. Importantly we’re able to demonstrate clearly what has been tested and what the tests are in a couple of ways.
When developing hybrid apps using Ionic, the ecosystem has a well developed set of testing tools, that allow us to cover any testing scenario we consider critical to the stability and maintainability of the application, and apply Test Driven Development (TDD) where we feel it is warranted. For unit and integration testing, we use Karma with Jasmine, and Karma Code Coverage.
Using Karma with Jasmine, allows us to produce human readable test suite documentation. This enables validation of functionality, and promotes effective communication between developers and product owners.

Karma Code Coverage is also highly valuable for developers and project managers to provide visibility at the source code level of what has and has not been tested - giving visual proof that the test descriptions provided by Jasmine actually test what they claim to test. This is not just a monitoring tool, but an important part of identifying tests that need to be written, but might otherwise slip through the cracks.

The ability to leverage the extensive, robust angular JavaScript testing ecosystem is invaluable, and one of the many advantages of building hybrid apps using Ionic. The result is that we can spend more of our time working on real features of the app, reduce build up of technical debt , write better quality code, communicate more effectively, and produce a better product.