Test amplification has a great potential to cover multiple contexts and configurations
How would you present STAMP?
For me, STAMP is about helping organizations who develop software to test that software, thereby increasing software quality. It uses amplification to address the need to do more testing while also reducing the effort needed to increase test coverage and quality. For a company selling software, or services based on software developed in-house, software quality is vital, and testing is the way to insure quality. Efficiency and agility are very important in today’s world, and DevOps is used to be able to quickly deploy changes made to the code. Efficient DevOps rely on automation, and good testing is vital to make sure new changes can be deployed without breaking existing features. We need good test coverage and we need to know that the quality of the coverage is good, that bugs in covered code really are discovered by tests. STAMP is about amplification, which I believe can help in several ways. Developers can write more tests, but this is costly and time-consuming, so if new tests can be generated from existing tests, stack traces or other existing data then this is a large gain. It is also not feasible to manually cover all variations, especially when considering complex systems which can run in different contexts and configurations, and here amplification has great potential.
What is your role in STAMP?
I work for a small Norwegian company called Tellu. Tellu’s software platform for our TelluCloud service is a STAMP project use case. This means that my main responsibility is in Work Package 5, where I work on instrumenting testing for TelluCloud, test the STAMP tools and providing feedback to the STAMP developers and researchers. I also have roles in two of the work packages developing the STAMP tools, WP2 and WP3. Here I work more directly with the tool developers on adopting the tools for the TelluCloud use case.
My role is mainly to provide a real-world use case to test and validate the tools. Hopefully this will help the tool development reach mature tools with a wide area of application.
What key innovation do you bring or help to develop?
The TelluCloud use case is quite demanding and need both unit test and configuration test amplification. We use industry standard technologies such as Java, Maven and Jenkins, and are moving towards DevOps with continuous integration and delivery. At the start of the STAMP project, a new version of TelluCloud was in development, based on a micro-service architecture. This is the version we have been testing in the project. Splitting up the system into micro-services made the development and maintenance of each part more manageable, but it also introduced new challenges. The complexity of the system as a whole increased, especially with respect to configuration and deployment, as there are many more parts to deploy, including queues and other infrastructure components. In addition to unit testing, testing of each micro-service and of the system as a whole became paramount. The micro-service version of TelluCloud is now in production. Testing done in STAMP has helped make this happen.
A word about yourself and your organization
I am a senior software developer at Tellu IoT, a small software company in Norway. Tellu provides TelluCloud, a cloud platform for collecting and processing data with a focus on IoT. We provide TelluCloud to service providers and other partners in different domains, for integration in their solutions. Our current commercial focus is e-health, communal care and personal safety and security domains.
I have a master’s degree in software engineering from NTNU (the Norwegian University of Science and Technology). I have worked at Tellu since 2008. Here, I work on various parts of our technology stack, both the TelluCloud server-side platform and mobile apps. Tellu is quite research oriented, having originated as a spinoff from Ericsson’s research department. I have participated in a number of research projects, often EU projects.
My involvement in STAMP concerns the work I do on software testing at Tellu. I have implemented a testing framework for running component and system tests on TelluCloud, which is based on pushing messages to the system under test and analyzing message outputs. Tellu’s overall objective in STAMP is to improve and automate testing for TelluCloud, to ensure its correctness and robustness in a cost-effective manner so that Tellu can continue to develop and deploy new versions without introducing bugs which disrupt the services. One STAMP tool, Descartes, has already helped to improve our test quality. It detects pseudo-tested methods – methods in our code which are executed in tests but where breaking the method is not detected by the test. Learning about mutation testing and pseudo-tested methods has been very useful for us and means we can now quantity test quality and correct mistakes. We are also very interested in configuration testing, as we need to be able to bring up the TelluCloud system in various configurations for running component and system tests.