At Dropsource, we strive to give our customers a great quality product and an excellent user experience. Part of the process of ensuring this level of quality is our internal testing before new features, updates, and bug fixes are released into production. While all of us at Dropsource are dedicated to quality throughout the development process, it is my responsibility as Senior Test Engineer to verify that everything released to production meets top quality standards.
There always will be a need for some degree of manual software testing, particularly when testing brand new functionality. However, in order to be an efficient and effective tester, a test engineer should develop solutions to perform as much automated testing as possible.
This frees the test engineer from having to perform the same manual tests repeatedly and also allows a much greater breadth of test coverage with each test cycle. I have already written very large, complex apps for both iOS and Android that exercise virtually every aspect of the Dropsource product. These apps have been very valuable for detecting issues that may get introduced during software development so that they do not make it to the production server. That said, the tests for the features themselves, while thorough, are still manual. As our product expands to encompass more features, it is my ultimate goal to automate as much testing as possible.
Naturally, I decided to use Dropsource to develop fully functional test apps that will integrate with backend databases and services as a basis for my automated test platform. I’m using Dropsource to build data-driven mobile apps to test Dropsource! This approach will not only have the benefit of developing tools and a test platform, but using it to create the tools is in and of itself a great test since I am behaving essentially as a “power user”. As such, I am able to give feedback directly to our development engineers from a user’s perspective.
Like any data-driven mobile app that would be created by a Dropsource member, the test automation platform I am developing will consist of two main parts: The data-driven backends and the mobile apps on the front end.
For the initial phase, I chose to start with a relatively simple app that monitors the test infrastructure. This infrastructure is responsible for building and compiling apps and is a mirror of our production setup. Part of the testing I do is to verify that around 25 different sample apps I have created, including the large test apps mentioned above, will compile properly while simultaneously verifying that our infrastructure will handle a heavy and varied load. One thing that was cumbersome when doing this testing was monitoring the build and compile queues and phases on each machine. It involved watching several simultaneous scrolling logs, watching processor core usage, and looking at multiple project tabs in a browser to gauge how the queues were working.
I worked with James, our Senior Infrastructure Architect, to develop an API that would give me data about the build queues and phases. Once he developed the API, he provided me a Swagger file which I directly imported into my app. Using those API calls, I wrote an app that would monitor the queues and provides near real-time feedback with regard to what each of the queues are doing. The app has an initial screen that provides a simple dashboard with indicators that change color based on the status of each of the build phases as well as a bar that indicates the queue depth for each phase. The second screen of the app provides all of the underlying numerical details.
This is of course just the beginning. My future plans include creating a test status database backend that test apps can write to using an API and a test status app that will provide feedback as to the pass/fail state of tests. Next, I will work toward automating those tests within the test apps themselves. The possibilities are virtually limitless.
Testing Dropsource by using Dropsource…. Eating your own dog food has rarely been this delicious!
Bonus: Here are some additional screens from apps I’ve built with Dropsource to test out our newest features and advanced functionality!