Fundamentals of Testing in Appian

Testing is vital to ensure that only high-quality projects are produced. Throughout the application's lifecycle, testing strategies can be categorized into the following stages:

  1. Before development
  2. During development
  3. Leading up to go-live
  4. During hardening
  5. Deployment

This article will provide an overview of the varied activities and types of tests that can be conducted at each development stage.

Before Development

At the start of the development cycle, the project team should convene to establish a testing strategy. This strategy ensures that project requirements are met, necessary resources are allocated, and potential risks are identified.

User Story Testing Standards

User stories are non-technical descriptions of an application's feature and are central to agile software development. Before development begins, the Appian team and the customer team should agree on standards for testing. A User Story Testing Checklist can be used to test each story. Each user story will be required to pass the criteria set forth in its Definition of Ready, so test cases should be created ahead of time to give the developer a better idea of the requirements.

Performance and Load Testing

These tests assess the application's behavior under varying conditions. Performance testing observes the system during peak usage, while load testing focuses on its response to a large user base. Factors like data size, peak usage, and user count are essential. Before initiating performance testing, it's crucial to:

  • Identify test data
  • Establish expected workflow.
  • Identify different usage scenarios.
  • Determine the performance test environment.

Additional resources can be found in Performance Testing Methodology.

Automated Testing

Automated testing is a software tool that automates the process of application testing by running a series of test cases. While automating manual end user tests can decrease the time needed for testing, there’s a time and cost involved in creating the tests for the entire application. The project team and stakeholders should meet to determine what types of automated tests will take place based on the time and resources that are available. Some types of automated testing tools are Fitnesse for Appian, Cucumber for Appian, and Appian’s Selenium API.

During Development

Throughout the development sprint, a variety of tests are conducted. Most are performed by the development team, but as the sprint concludes, the client or their QA team should undertake some.

Expression Rule Test Cases

In an expression rule object, test cases can be written and stored to determine if the expected results are being achieved based on certain input. Test cases can be run within the expression rule or through the Manage Test Cases dialog from the Settings menu in the Appian Designer. See Creating Expression Rule Test Cases to learn more.

Unit Testing

Unit testing is for testing individual units or small interconnected functionalities of the application. Typically performed by the developer, test cases are created before development. Objects such as expression rules and decision rules have an expected result, so code is written to test all possible scenarios. More information can be found in Functional Testing - Unit Testing and Creating Expression Rule Test Cases.

An example expression rule that has coverage and error handling tests.

System Integration Testing

After Unit Testing, System integration testing (SIT) is used to assess the overall functionality and interactions between the different components. This testing includes workflows, integrations with outside systems, and database connections.

Peer Testing

During a sprint, peer reviewers (fellow developers from the team) should be utilized to conduct similar tests performed by the developer, as well as to ensure best practices and common design standards are followed. Review the user story testing checklist completed prior to development and use it as a guide for your developer and peer review testing. Consider adopting the AQuAMan framework to automate and speed up some of the peer review process.

User Acceptance Testing

While user acceptance testing (UAT) is typically performed as the final phase in the development sprint and prior to software launch, it should also be done throughout the duration of the project. UAT is designed to make sure an application meets the needs of the business, is free of bugs, and functions as intended. See User Acceptance Testing Overview for more.

Regression Testing

Regression testing is used to ensure that any changes or updates in the software will not negatively affect the working functionality of the application amidst the new changes.

Exploratory Testing

Exploratory testing is used to identify potential edge cases, i.e. problems that occur only under unique, rare conditions. This type of testing is performed by testers themselves rather than automated scripts. Be sure to incorporate exploratory testing as it's useful for catching bugs that might otherwise go undetected.

Leading Up to Go Live

Prior to the Go Live, stringent user acceptance testing should be performed at a level of granularity that is appropriate for the scope of work.

During Hardening

During Hardening, the team’s time is focused on full end-to-end testing, catching and resolving bugs, and fine tuning application performance. While most major bugs and issues should have already been resolved in prior testing phases, hardening provides an opportunity to catch more minor flaws and UX adjustments, thereby mitigating risk and improving overall confidence in the production release.

End to End Testing

In end to end testing, the focus is on the entire system’s functionality. It’s purpose is to ensure the flow of data is maintained and the software works as intended in all environments. End to end testing can be performed/assissted by automated testing tools like Fitnesse for Appian.

Exploratory Testing

It's a good idea to again use exploratory testing during the hardening phase, as edge cases can be hard to find using automated tools.

Deployment

Testing during the deployment stage allows the team to evaluate the functionality of the application in the exact environment where it needs to function.

Systems Integration Testing

After deployment, SIT is again performed to evaluate the behavior of the entire integrated system and to make sure that all connections have been maintained.

Unit Testing

When inspection occurs during direct deployment, Appian will check the package for any failing test cases. Review and rerun test cases until the issues are resolved. See Functional Testing - Unit Testing for more information.

Regression Testing

After work completes on development, regression testing should be performed by the QA team to ensure that all components are still functional and work as intended.

Health Check

Health Check is a process that provides insights into an application. It can identify services and nodes that pose a high risk to the performance of the application, check to make sure that best practices are being followed, and provide graphs detailing historical trends in the environment. See the Health Check documentation for more.

Testing is an important step in the development of any application. Tests need to be planned and executed during every stage of software development. By having a proper test plan, you can identify bugs, errors, and missing requirements, which will guarantee the quality of the application.

Downloadables

This one-pager identifies critical testing strategies that should be embedded in every Appian delivery team and recommends others that are dependent upon the client and solution being developed.

PDF