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:
This article will provide an overview of the varied activities and types of tests that can be conducted at each development stage.
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 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.
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:
Additional resources can be found in Performance Testing Methodology.
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.
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.
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 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.
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.
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.
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 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 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.
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, 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.
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.
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.
Testing during the deployment stage allows the team to evaluate the functionality of the application in the exact environment where it needs to function.
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.
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.
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 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.
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