Technology & Innovation

Variety is the Spice of Life

Variety is the spice of life and Anonyome Labs has it in spades!

My role at Anonyome Labs is QA Automation Engineer. I am responsible for the architecture, design, and implementation of the UI automated test framework and testing tools. If that sounds dull and boring, the Python , ReactiveX Swift on iOS, ReactiveX Kotlin on Android, and Node.js projects that I have worked on over the last 6 months tell a different story.

Here are some of the projects that have added spice to my work days.

Sudo Apps Data Load Tool

Anonyome Labs develops a series of mobile apps which deliver the power of Sudo private identities to end users on both iOS and Android platforms. Messaging is a key feature of these apps. In order to adequately test these mobile apps, the QA team needed to run some test cases with the app heavily loaded with messages. To address the requirement to heavily load an app with a large amount of message data, I developed a tool that generated the test data and loaded that data directly into the app database. This architecture avoids the need to actually send a large number of messages, which is both time-consuming and costly.

The tool consists of a web app which generates the message data and a development-build, internal use only app enhancement to load the generated message data into the app message database. The web app was written in Python to conform with other internal tools. The app-side enhancement had to fit in with the app’s existing implementation, that is:

  • ReactiveX Swift on iOS, and
  • ReactiveX Kotlin on Android

Because of the large amounts of data involved, the tool had to be designed and implemented to ensure efficient use of network resources and app-side memory resources.

This tool has become an integral part of our testers’ arsenal, as it allows them to quickly and easily create testing scenarios that mimic the real-world usage patterns of our heavy users.

UI Automated Tests that run unchanged on both iOS and Android

Anonyome’s UI Automated Test Framework is written in Python and built on Appium. The framework supports the Page Object Model and the tests conform to that design pattern. Appium supports testing apps on both iOS and Android, so one of the goals of Anonyome’s UI Automated Test Framework is to support a single set of tests that can be run against both the iOS and Android versions of our apps. In order to do this, several conditions have to be met:

  1. Feature parity between the iOS and Android versions of the app under test
  2. All of the platform-specific test code has to reside in the Page Objects, allowing the tests to interact with the app under test in a platform agnostic manner
  3. The framework must support automatically loading the appropriate platform-specific Page Object at run time.

Turning the cross-platform potential of Appium into reality has been an interesting technical challenge that has the potential to significantly reduce the time taken to develop automated tests for all of our apps.

Reporting Automated Test Results

Anonyome’s runs UI automated tests in continuous integration pipelines. Both testers and QA managers need to be able to view and analyse the results of these test runs without the need to trawl through log files. Anonyome’s test report server is written in Node.js and allows:

  • testers to drill into the details of each test case, including viewing screenshots taken at each test step, in order to analyse test failures
  • managers to view summaries of test results and historical trends

On this project I had the pleasure to mentor one of Anonyome’s student interns. It was great to work with an intelligent and enthusiastic young student.

Another fun and interesting project which has resulted in a widely used tool that makes our testers and managers more efficient.

Summary

As I have shown with the above examples, my role as a QA Automation Engineer at Anonyome Labs is interesting and diverse. I have been able to add the following to my resume in a short period of time. In most cases, it takes a significant number of years to gain such breadth of experience.

  • software development using many different technologies: ReactiveX, Swift on iOS, Kotlin on Android, Python, and Node.js.
  • solving many interesting software engineering problems:
    • efficient use of mobile app memory
    • efficient use of network bandwidth
    • usable UI design
    • write once, run on multiple platforms tests

This variety of projects and technologies have added spice to my already interesting role at Anonyome Labs ensuring our privacy products meet the highest quality standards.