AppTester has been built based on an adaptation of Mike Cohn’s “Test Pyramid” which was first described in his book “Succeeding with Agile“. The Original test Pyramid consisted of three layers as shown in the illustration below.
The Pyramid Metaphor is useful as it shows two things very clearly:
- The need to write tests at different levels of granularity
- The higher up the pyramid, the less tests should be written
From an AppTester perspective, we took this approach as a recognisable foundation and have added some further layers to assist with BAW specific testing. The AppTester Pyramid is shown below.
The layers of the Test Pyramid are described below.
Unit Tests should ideally be created as part of development activities.
We advise that all developers are granted access to AppTester in order for them to create and run Unit Tests. This will lead to an increase in “First Time Right” when creating a snapshot and will shorten the “Discover Bug to Fix Bug” cycle.
Service Tests are based on the concept that, based on an Input, the application reacts to give an output. For example, if we have a service to retrieve an Account Holder Name based on the Account number, a Service test would check what happens if we provide the system with an Account Number.
We focus on testing the services independently from the user interface which is tested at the next level of the pyramid.
User Interface Tests
UI tests are focused on testing the Coaches or Human Services in IBM BAW. Here, the focus is on ensuring that the UI works as anticipated. AppTester allows for headless testing of your application based on selectors (CSS, XPath, ID or Class). Testing items like validations, application flow and for submission all make up part of this stage of the AppTester Pyramid.
Here, we come to the first additional level in our Test Pyramid. A key part of BAW is, logically, the Process Flow. In AppTester, users can define their required flow through the process that they wish to test. This will inevitably make up a combination of Services and User Interface components (Coaches or Human Services)
Logically, Process Tests come later in the testing cycle as Processes evolve and settle over time.
Typically, there are numerous possible flows through a process. Skilled testers should be able to identify and define the most important flows through a process and first perform rigorous testing on these before testing less frequently occurring process flows.
AppTester supports the concept of testing Services in a Flow, this is our foundation for System Tests and allows users to test sequences of Services, where the Output from one service may provide the Input to a subsequent service.
System tests will be developed further at a later stage, and we have some items on our roadmap to enhance this level of testing. Please contact us if you would like to discuss the concept further.
Manual tests are not supported by AppTester. These are high-level tests that should be performed in your BAW Test environment.
We hope that this has provided some useful context into how we view AppTester and the approach that we have taken when building the tool.
We know that the temptation is there to jump straight into testing processes, but we believe that, even for existing process applications, laying a foundation of Unit Test, Service Tests and UI tests should be completed before you embark on Process Tests. This not only gives you a solid understanding of the tool, but also some reference examples as you progress upwards through the Test pyramid.