<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.appian.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing</link><pubDate>Tue, 23 Apr 2024 13:22:14 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>Appian Max Team</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Current Revision posted to Guide by Appian Max Team on 4/23/2024 1:22:14 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole.&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint.
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing.&lt;/li&gt;
&lt;li&gt;At the end of sprint development, move the application to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint.
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases.&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect.&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing.&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0.&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint.
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories.&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the delivery team only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Delivery, testing&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/16</link><pubDate>Tue, 02 Apr 2024 15:07:17 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>Appian Max Team</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 16 posted to Guide by Appian Max Team on 4/2/2024 3:07:17 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole.&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint.
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing.&lt;/li&gt;
&lt;li&gt;At the end of sprint development, move the application to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint.
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases.&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect.&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing.&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0.&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint.
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories.&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the delivery team only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Delivery, testing&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/15</link><pubDate>Tue, 31 Oct 2023 16:37:21 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>Kim Day</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 15 posted to Guide by Kim Day on 10/31/2023 4:37:21 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole.&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint.
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing.&lt;/li&gt;
&lt;li&gt;At the end of sprint development, move the application to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint.
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases.&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect.&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing.&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0.&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint.
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories.&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the delivery team only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Delivery, testing&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/14</link><pubDate>Tue, 31 Oct 2023 15:09:40 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>Kim Day</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 14 posted to Guide by Kim Day on 10/31/2023 3:09:40 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole.&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint.
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing.&lt;/li&gt;
&lt;li&gt;At the end of sprint development, move the application to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint.
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases.&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect.&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing.&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0.&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint.
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories.&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the delivery team only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Delivery, testing&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/13</link><pubDate>Wed, 25 Oct 2023 14:58:39 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 13 posted to Guide by joel.larin on 10/25/2023 2:58:39 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole.&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint.
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing.&lt;/li&gt;
&lt;li&gt;At the end of sprint development, move the application to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint.
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases.&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect.&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing.&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0.&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint.
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories.&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the delivery team only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/12</link><pubDate>Wed, 25 Oct 2023 14:55:51 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 12 posted to Guide by joel.larin on 10/25/2023 2:55:51 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole.&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint.
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing.&lt;/li&gt;
&lt;li&gt;At the end of sprint development, move the application to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint.
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases.&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect.&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing.&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0.&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint.
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories.&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/11</link><pubDate>Wed, 25 Oct 2023 14:54:40 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 11 posted to Guide by joel.larin on 10/25/2023 2:54:40 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, move the application to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/10</link><pubDate>Wed, 25 Oct 2023 14:53:47 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 10 posted to Guide by joel.larin on 10/25/2023 2:53:47 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Perform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/9</link><pubDate>Wed, 25 Oct 2023 14:52:23 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 9 posted to Guide by joel.larin on 10/25/2023 2:52:23 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="how_to_perform_functional_testing"&gt;How to Peform Functional Testing&lt;/h2&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/8</link><pubDate>Wed, 25 Oct 2023 14:50:25 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 8 posted to Guide by joel.larin on 10/25/2023 2:50:25 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/7</link><pubDate>Wed, 25 Oct 2023 14:49:38 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 7 posted to Guide by joel.larin on 10/25/2023 2:49:38 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when_should_you_test?"&gt;When Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/6</link><pubDate>Wed, 25 Oct 2023 14:49:04 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 6 posted to Guide by joel.larin on 10/25/2023 2:49:04 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when_should_you_test?"&gt;When Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing"&gt;Unit Testing vs User Acceptance Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;h3 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h3&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h3 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h3&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h3 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h3&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h3 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h3&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/5</link><pubDate>Wed, 25 Oct 2023 14:47:21 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 5 posted to Guide by joel.larin on 10/25/2023 2:47:21 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="what_should_you_test?"&gt;What Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when_should_you_test?"&gt;When Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how_should_you_test?"&gt;How Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing_vs_user_acceptance_testing"&gt;Unit Testing vs User Acceptance Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;h2 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h2&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h2 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h2&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h2 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h2&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h2 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h2&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/4</link><pubDate>Wed, 25 Oct 2023 14:46:36 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 4 posted to Guide by joel.larin on 10/25/2023 2:46:36 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="why_perform_functional_testing?"&gt;Why Perform Functional Testing?&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="what_should_you_test?"&gt;What Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when_should_you_test?"&gt;When Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how_should_you_test?"&gt;How Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing_vs_user_acceptance_testing"&gt;Unit Testing vs User Acceptance Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/3</link><pubDate>Wed, 25 Oct 2023 14:45:45 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 3 posted to Guide by joel.larin on 10/25/2023 2:45:45 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h3 id="what_should_you_test?"&gt;What Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="when_should_you_test?"&gt;When Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how_should_you_test?"&gt;How Should You Test?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="unit_testing_vs_user_acceptance_testing"&gt;Unit Testing vs User Acceptance Testing&lt;/h3&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;h2 id="what_is_unit_testing?"&gt;What is Unit Testing?&lt;/h2&gt;
&lt;p&gt;Unit Testing is the testing of &amp;ldquo;units&amp;rdquo; or &amp;ldquo;components&amp;rdquo; of a system during the development process by the developer. Unit Testing should occur at the smallest or most granular level of developed code such as an Appian object or even a piece of logic inside an Appian object. Unit Testing should then be expanded to test whether objects interact with each other appropriately.&lt;/p&gt;
&lt;h2 id="when_to_unit_test?"&gt;When to Unit Test?&lt;/h2&gt;
&lt;p&gt;Unit Testing occurs throughout the development cycle, but specifically at the following points:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;During story development as objects are created/updated.&lt;/li&gt;
&lt;li&gt;After story development is complete and before the functionality is incorporated into the larger application.&lt;/li&gt;
&lt;li&gt;During a peer review.&lt;/li&gt;
&lt;li&gt;After implementing changes from a peer review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If new connections such as an integration, a subprocess being inserted into a process model, or a database connection are part of the story being developed, System Integration Testing should also be performed as part of Unit Testing.&lt;/p&gt;
&lt;h2 id="why_is_unit_testing_important?"&gt;Why is Unit Testing important?&lt;/h2&gt;
&lt;p&gt;Unit Testing is important for many reasons. It improves quality of developed work, it increases efficiency by allowing developers to find and resolve issues that could arise in QA testing, UAT, or even in production, and thorough Unit Testing leaves a developer and team confident in developed work.&lt;/p&gt;
&lt;h2 id="how_to_unit_test:"&gt;How to Unit Test:&lt;/h2&gt;
&lt;p&gt;The strategy for Unit Testing will be different for different object types. Below are instructions for how different types of objects should be Unit Tested:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Expression Rules:&lt;/b&gt; Expression rules can be Unit Tested by using expression rule test cases. For more information on using expression rule test cases, see the &lt;a href="/w/guide/3342/how-to-create-expression-rule-test-cases"&gt;Creating Expression Rule Test Cases Playbook play&lt;/a&gt; and the &lt;a href="https://docs.appian.com/suite/help/21.1/Expression_Rule_Testing.html"&gt;Expression Rule Testing with Appian Documentation page&lt;/a&gt;. Make sure all Unit Tests performed on expression rules are saved as test cases so that they can be automated in the future. Be sure to set up test cases to test the functionality of the rule by asserting outputs when possible and not resorting to only using &amp;ldquo;no error&amp;rdquo; assertions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interfaces&lt;/b&gt;: Interfaces can be Unit Tested manually or Unit Tested with automated testing tools like Fitnesse for Appian or the Appian Selenium API. The developer should consider what possible inputs a user can input on the interface and test these scenarios with varied and representative rule inputs, if applicable. Individual interfaces should be Unit Tested in designer with appropriate rule inputs and interactions before integrating into parent interfaces. Once the interface is integrated into its parent interfaces, general functional, AC, and exploratory testing should capture all front end flows with a test-user account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Process Models:&lt;/b&gt; Process models need to be Unit Tested manually. All flows of a process model should be Unit Tested. Make sure that all subprocesses are thoroughly Unit Tested before incorporating them into a parent process. Process models that employ interfaces should also be Unit Tested to ensure that the interface&amp;rsquo;s values are correctly saved.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Decision Rules:&lt;/b&gt; Decision rules should be initially tested in the decision rule editor to ensure that correct values are returned when valid and invalid inputs are passed. Once decision rules have been tested in the editor, they should be wrapped in an expression rule wrapper. Wrapping them in an expression rule allows the usage of expression rule test cases and allows their testing to be automated. Finally, the expression rule that wraps the decision should also be tested in the context of wherever it is called whether it be another expression rule, an interface, a process model, etc.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the above is not an exhaustive list of object types that need to be Unit Tested and it is also not an exhaustive list of strategies for Unit Testing the listed object types.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/2</link><pubDate>Wed, 25 Oct 2023 14:43:41 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 2 posted to Guide by joel.larin on 10/25/2023 2:43:41 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;h2 id="why_perform_functional_testing?"&gt;Why Perform Functional Testing?&lt;/h2&gt;
&lt;p&gt;Functional testing is required to verify that a software application performs correctly according to design specifications. It provides you with the opportunity to identify any defects which would prevent the application from being unfit for users.&lt;/p&gt;
&lt;h2 id="what_should_you_test?"&gt;What Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Developers should unit test before promoting to the Test environment to reduce the number of defects in functional testing.&lt;/li&gt;
&lt;li&gt;End-to-end integration testing in the Test environment - make sure pieces that were developed independently can properly operate as a whole&lt;/li&gt;
&lt;li&gt;Regression testing - retest previously tested functionality if the following has occurred:
&lt;ul&gt;
&lt;li&gt;Shared Object updates&lt;/li&gt;
&lt;li&gt;Post integration updates&lt;/li&gt;
&lt;li&gt;Updates to previously released code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when_should_you_test?"&gt;When Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Unit testing should occur on a regular cycle throughout the sprint
&lt;ul&gt;
&lt;li&gt;During development, unit test and set status to &amp;quot;Ready to Test&amp;quot; for peer review and system testing&lt;/li&gt;
&lt;li&gt;At the end of sprint development, &lt;a href="/w/the-appian-playbook/promoting-and-deploying-applications"&gt;move the application&lt;/a&gt; to the Test environment and run regression and system tests before releasing to the Test team for functional testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Testers should be involved in the sprint
&lt;ul&gt;
&lt;li&gt;They should attend the sprint planning to give them the visibility to prepare the appropriate test cases&lt;/li&gt;
&lt;li&gt;They should attend each sprint demonstration to know what to expect&lt;/li&gt;
&lt;li&gt;Allow the testers to ask questions at the end of the demo to limit clarifications and bottlenecks during testing&lt;/li&gt;
&lt;li&gt;Definitions for &amp;quot;Ready for Test&amp;quot; and &amp;ldquo;Done&amp;rdquo; should be defined in Sprint 0&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t wait until the last minute!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UAT should occur after every sprint
&lt;ul&gt;
&lt;li&gt;Defects caused by test cases that fail can be rolled into future sprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how_should_you_test?"&gt;How Should You Test?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Make a test plan based on the acceptance criteria in the user stories&lt;/li&gt;
&lt;li&gt;Create individual test cases that are easy to test; they can even be &lt;a href="/w/guide/3310/automated-testing"&gt;automated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="unit_testing_vs_user_acceptance_testing"&gt;Unit Testing vs User Acceptance Testing&lt;/h2&gt;
&lt;p&gt;Unit tests are typically performed by each developer before integrating a component into the larger system. Their purpose is to confirm that the component is sufficiently complete and correct to integrate without causing undue impact on the rest of the development team. Unit tests should be performed on each component prior to its integration into any larger system. They are not supervised by the QA team, and results do not need to be documented and managed.&lt;/p&gt;
&lt;p&gt;User Acceptance testing is the formal, contractual verification of an application by the end user team designated by the Product Owner. It is primarily performed by the end users, and the &lt;a href="/w/the-appian-playbook/delivery-team-roles"&gt;delivery team&lt;/a&gt; only has a supporting role. Even with this limited role, management of the process is critical to project success - UAT should happen with every delivered increment and end user involvement is critical to project success.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Functional Testing</title><link>https://community.appian.com/success/w/guide/3336/functional-testing/revision/1</link><pubDate>Wed, 13 Sep 2023 13:40:06 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:20771343-59f4-4309-bead-9c444f4697db</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3336/functional-testing#comments</comments><description>Revision 1 posted to Guide by joel.larin on 9/13/2023 1:40:06 PM&lt;br /&gt;
&lt;p&gt;DFAS&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>