How to Dramatically Improve Testability for Mobile App Development – Part 1
How to Dramatically Improve Testability for Mobile App Development
Part 1: Why Yesterday’s Approach no Longer Fills the Bill
Software quality is only as good as the methods used to develop and test the code. Thorough testing, if not performed well, can be very resource inefficient and therefore may not validate the design. At Syncro Medical, we are constantly looking for ways to increase overall medical software development efficiency, and that includes the efficiency and accuracy of testing approaches. bring their own set of challenges when requiring a confident testing model. Applying a desktop design pattern that supports solid testing is often difficult, but with the proper approach, it can be applied effectively. Code that is built from the top down with a thorough testing-capable design is more stable and maintainable, and all-in-all more valuable to our clients and to their customers.
“Code that isn’t tested doesn’t work. This seems to be the safe assumption.” These words from Kent Beck’s book, Test-driven Development: By Example, are good words to live by as a software developer. If you (or even better, others) haven’t tested your code, how can you know that it will work in all situations when it gets into the hands of your users? And if you don’t continually test, how do you know it still works after you’ve made changes to your code, even if those changes are to seemingly unrelated parts of your system? This is particularly important for a Mobile UI where there are many ways in which the user can interact with code and many of the error conditions that can occur are difficult to reproduce. You need a way to test your code that is repeatable and can simulate all of the error conditions the user might encounter.
The Importance of Unit Testing
Typically, Unit testing has been the method of choice. Unit tests are small test methods that isolate components of the code by emulating the dependencies and testing the behavior of the components by manipulating the inputs and observing the outputs. By emulating a component’s dependencies, a unit test can test all conditions the code might operate under, including error conditions that would be difficult to reproduce in a live system. Continuous Integration Systems (such as TeamCity) can build and run the unit tests every time new code is checked into your source code repositories, giving you confidence that your existing code still works as new code is implemented.