{"id":65,"date":"2021-09-12T21:38:40","date_gmt":"2021-09-12T21:38:40","guid":{"rendered":"https:\/\/www.softwaretestinghelp.com\/how-to-write-effective-test-cases-test-cases-procedures-and-definitions\/"},"modified":"2025-05-09T10:44:25","modified_gmt":"2025-05-09T10:44:25","slug":"how-to-write-effective-test-cases-test-cases-procedures-and-definitions","status":"publish","type":"post","link":"https:\/\/www.softwaretestinghelp.com\/how-to-write-effective-test-cases-test-cases-procedures-and-definitions\/","title":{"rendered":"How to Write Test Cases in Software Testing (Examples)"},"content":{"rendered":"\n<p><strong>An intensive series of in-depth hands-on tutorials on Test Cases. Explore how to write Test Cases and understand their complete meaning with their standard definition and Test Case Design techniques<\/strong>:<\/p>\n\n\n\n<p><strong>What is a Test case?<\/strong><\/p>\n\n\n\n<p>A test case has components that describe input, action, and an expected response, to determine if a feature of an application works correctly.<\/p>\n\n\n\n<p>A test case is a set of instructions on \u201cHOW\u201d to validate a particular test objective\/target, which, when followed will tell us if the expected behavior of the system is satisfied or not.<b>&nbsp;<\/b><\/p>\n\n\n  \n \n \n\n\n<h2 class=\"wp-block-heading\">Test Case Tutorial Series: In-Depth Guide<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2007\/07\/How-to-Write-Test-Cases-The-Ultimate-Guide-with-Examples.png\"><img decoding=\"async\" width=\"1000\" height=\"563\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2007\/07\/How-to-Write-Test-Cases-The-Ultimate-Guide-with-Examples.png\" alt=\"How to Write Test Cases: The Ultimate Guide with Examples\" class=\"wp-image-313087\" style=\"width:700px\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2007\/07\/How-to-Write-Test-Cases-The-Ultimate-Guide-with-Examples.png 1000w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2007\/07\/How-to-Write-Test-Cases-The-Ultimate-Guide-with-Examples-300x169.png 300w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2007\/07\/How-to-Write-Test-Cases-The-Ultimate-Guide-with-Examples-768x432.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>List of Tutorials Covered in this Test Case Writing Series:<\/strong><\/p>\n\n\n\n<p><strong>How to Write:<\/strong><\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #1:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/how-to-write-effective-test-cases-test-cases-procedures-and-definitions\/\">What is a Test Case and How to Write Test Cases<\/a> <strong>(this tutorial)<\/strong><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #2:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/test-case-template-examples\/\">Sample Test Case Template with Examples [Download]<\/a> <strong>(must read)<\/strong><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #3:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/writing-test-cases-from-srs-software-testing-qa-training-day-4\/\">Writing Test Cases from SRS Document<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #4:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/how-to-write-test-cases-for-a-given-scenario\/\">How to Write Test Cases for a Given Scenario<\/a><br><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #5:<\/mark><\/strong><\/span> <a href=\"https:\/\/www.softwaretestinghelp.com\/how-to-prepare-yourself-for-test-case-writing\/\">How to Prepare Yourself for Test Case Writing<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #6:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/what-is-negative-testing\/\">How to Write Negative Test Cases<\/a><\/p>\n\n\n\n<p><strong>Examples:<\/strong><\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #7:<\/mark><\/span><\/strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"> <\/mark><a href=\"https:\/\/www.softwaretestinghelp.com\/sample-test-cases-testing-web-desktop-applications\/\">180+ Sample Test Cases for Web and Desktop Applications<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #8:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/sample-test-cases-testing-web-desktop-applications\/\">100+ Ready-to-Execute Test Scenarios (Checklist)<\/a><\/p>\n\n\n\n<p><strong>Writing Techniques:<\/strong><\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #9:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/cause-and-effect-graph-test-case-writing-technique\/\">Cause and Effect Graph \u2013 Dynamic Test Case Writing Technique<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #10:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/state-transition-testing-technique-for-testing-complex-applications\/\">State Transition Testing Technique<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #11:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/combinational-test-technique-2\/\">Orthogonal Array Testing Technique<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #12:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/error-guessing-technique\/\">Error Guessing Technique<\/a><br><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #13:<\/mark><\/strong><\/span><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"> <\/mark><a href=\"https:\/\/www.softwaretestinghelp.com\/field-validation-table-fvt-testing\/\">Field Validation Table (FVT) Test Design Technique<\/a><\/p>\n\n\n\n<p><strong>Test Case Vs Test Scenarios:<\/strong><\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #14:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/test-cases-vs-test-scenarios\/\">Test Cases Vs Test Scenarios<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #15:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/difference-between-test-plan-test-strategy-test-case-test-script-test-scenario-and-test-condition\/\">Difference Between Test Plan, Test Strategy and Test Case<\/a><\/p>\n\n\n\n<p><strong>Automation:<\/strong><\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #16:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/manual-to-automation-testing-process-challenges\/\">How to Select Correct Test Cases for Automation Testing<\/a><br><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #17:<\/mark><\/strong><\/span> <a href=\"https:\/\/www.softwaretestinghelp.com\/how-to-translate-manual-test-cases-into-automation-scripts\/\">How to Translate Manual Test Cases into Automation Scripts<\/a><\/p>\n\n\n\n<p><strong>Test Management Tools:<\/strong><\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #18:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/15-best-test-management-tools-for-software-testers\/\">Best Test Management Tools<\/a><br><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #19:<\/mark><\/span><\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/testlink-tutorial-2\/\">TestLink for Test case Management<\/a><br><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #20:<\/mark><\/strong><\/span> <a href=\"https:\/\/www.softwaretestinghelp.com\/hp-quality-center-tutorial-4\/\">Creating and Managing Test Cases Using HP Quality Center<\/a><br><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #21:<\/mark><\/strong><\/span> <a href=\"https:\/\/www.softwaretestinghelp.com\/hp-quality-center-tutorial-5\/\">Executing Test Cases Using ALM\/QC<\/a><\/p>\n\n\n\n<p><strong>Domain Specific Cases:<\/strong><\/p>\n\n\n\n<p><strong>Tutorial #22:<\/strong><a href=\"https:\/\/www.softwaretestinghelp.com\/erp-testing-sap-testing-test-plan-part-2\/\"> Test Cases for ERP Application<\/a><br><strong>Tutorial #23:<\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/testing-java-applications-part-1\/\">JAVA Application test cases<\/a><br><strong>Tutorial #24:<\/strong> <a href=\"https:\/\/www.softwaretestinghelp.com\/what-is-boundary-value-analysis-and-equivalence-partitioning\/\">Boundary value analysis and Equivalence partitioning<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Let&#8217;s continue with the first tutorial in this series.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is a Test Case and How to Write Test Cases?<\/h2>\n\n\n\n<p>Writing effective cases is a skill. You can learn it from the experience and knowledge of the application under test.<\/p>\n\n\n\n<p><strong>For basic instructions on how to write tests, please check the following&nbsp;video:<\/strong><\/p>\n\n\n\n<p><iframe src=\"https:\/\/www.youtube.com\/embed\/9abf1eQephA?rel=0\" width=\"485\" height=\"273\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-mce-fragment=\"1\"><\/iframe><\/p>\n\n\n\n<p>The above resources should give us the basics of the test writing process.<\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Levels of Test Writing Process:<\/mark><\/span><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Level 1:<\/strong> In this level, you will write the <strong>basic cases from the available specification<\/strong> and user documentation.<\/li>\n\n\n\n<li><strong>Level 2:<\/strong> This is the <strong>practical stage<\/strong> in which writing cases depend on the actual functional and system flow of the application.<\/li>\n\n\n\n<li><strong>Level 3:<\/strong> This is the stage in which you will group some cases and <strong>write a test procedure<\/strong>. The test procedure is nothing but a group of small cases, maybe a maximum of 10.<\/li>\n\n\n\n<li><strong>Level 4:<\/strong> <strong>Automation of the project.<\/strong> This will minimize human interaction with the system and thus the QA can focus on the currently updated functionalities to test rather than remaining busy with Regression testing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"color: #000000;\">Why do we Write Tests?<\/span><\/h3>\n\n\n\n<p>The basic objective of writing cases is <strong>to validate the test coverage of an application.<\/strong><\/p>\n\n\n\n<p>If you are working in any CMMi organization, then the test standards are followed more closely. Writing cases brings some sort of standardization and minimizes the ad hoc approach in testing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"color: #000000;\">How to Write Test Cases?<\/span><\/h3>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Fields:<\/mark><\/strong><\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Test case id<\/strong><\/li>\n\n\n\n<li><strong>Unit to test:<\/strong> What to be verified?<\/li>\n\n\n\n<li><strong>Assumptions<\/strong><\/li>\n\n\n\n<li><strong>Test data:<\/strong> Variables and their values<\/li>\n\n\n\n<li><strong>Steps to be executed<\/strong><\/li>\n\n\n\n<li><strong>Expected Result<\/strong><\/li>\n\n\n\n<li><strong>Actual result<\/strong><\/li>\n\n\n\n<li><strong>Pass\/Fail<\/strong><\/li>\n\n\n\n<li><strong>Comments<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Basic Format of Test Case Statement<\/mark><\/span><\/h3>\n\n\n\n<p><em><strong>Verify<br>Using&nbsp;<\/strong>[tool name, tag name, dialog, etc]<\/em><br><em><strong>With<\/strong> [conditions]<\/em><br><em><strong>To<\/strong> [what is returned, shown, demonstrated]<\/em><\/p>\n\n\n\n<p><strong>Verify:<\/strong> Used as the first word of the test statement.<br><strong>Using:<\/strong> To identify what is being tested. You can use \u2018entering\u2019 or \u2018selecting\u2019 here instead of using depending on the situation.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">For any application, you need to cover all types of tests as:<\/mark><\/strong><\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong> Functional cases<\/strong><\/li>\n\n\n\n<li><strong>Negative cases<\/strong><\/li>\n\n\n\n<li><strong>Boundary value cases<\/strong><\/li>\n<\/ul>\n\n\n\n<p>While writing these, all your <strong>TC&#8217;s should be simple and easy to understand<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Tips for Writing Tests<\/h2>\n\n\n\n<p>One of the most frequent and major activities of a Software Tester (SQA\/SQC person) is to write Test scenarios and cases.<\/p>\n\n\n\n<p>Some important factors are related to this major activity. Let us have a bird&#8217;s-eye view of those factors first.<\/p>\n\n\n\n<p><strong>Important Factors Involved in the Writing Process:<\/strong><\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"> a) TCs are prone to regular revision and update<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>We live in a continuously changing world and the same holds good for software as well. Software requirements change directly affects the cases. Whenever requirements are altered, TCs need to be updated.<\/p>\n\n\n\n<p>Yet, it is not only the change in the requirement that may cause revision and update of TCs. During the execution of TCs, many ideas arise in the mind and many sub-conditions of a single TC may be identified. All this causes an update of TCs and sometimes it even leads to the addition of new TCs.<\/p>\n\n\n\n<p>During regression testing, several fixes and\/or ripples demand revised or new TCs.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"> b) TCs are prone to distribution among the testers who will execute these<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>Of course, there is hardly such a situation in which a single tester executes all the TCs. Normally, several testers test different modules of a single application. So the TCs are divided among the testers according to their owned areas of the application under test.<\/p>\n\n\n\n<p>Some TCs that are related to the integration of applications may be executed by multiple testers, while the other TCs may be executed only by a single tester.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"> c) TCs are prone to Clustering and Batching<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>It is normal and common that TCs belonging to a single test scenario usually demand their execution in some specific sequence or as a group. There may be certain pre-requisites of a TC that demand the execution of other TCs before running itself.<\/p>\n\n\n\n<p>Similarly, as per the business logic of the AUT, a single TC may contribute to several test conditions and a single test condition may comprise multiple TCs.<\/p>\n\n\n\n \n\n\n\n<p><span style=\"color: #ff6600;\"><strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">d) TCs tend inter-dependence<\/mark><\/strong><\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"492\" height=\"164\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/Test-Cases-have-a-tendency-of-inter-dependence.jpg\" alt=\"Test Cases have a tendency of inter-dependence\" class=\"wp-image-15035\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/Test-Cases-have-a-tendency-of-inter-dependence.jpg 492w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/Test-Cases-have-a-tendency-of-inter-dependence-300x100.jpg 300w\" sizes=\"(max-width: 492px) 100vw, 492px\" \/><\/figure>\n\n\n\n<p>This is also an interesting and important behavior of the TCs, denoting that they can be interdependent. From medium to large applications with complex business logic, this tendency is more visible.<\/p>\n\n\n\n<p>The clearest area of any application where this behavior can definitely be observed is the interoperability between different modules of the same or even different applications. Simply, wherever the different modules of a single application or multiple applications are interdependent, then the same behavior is reflected in the TCs as well.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">e) TCs are prone to distribution among the developers (especially in Test-driven development environment)<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>An important fact about TCs is that these are not only to be utilized by the testers. In the normal case, when a bug is under fix by the developers, they are indirectly using the TC to fix the issue.<\/p>\n\n\n\n<p>Similarly, if the test-driven development is followed, then TCs are directly used by the developers to build their logic and cover all the scenarios in their code that are addressed by TCs.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"300\" height=\"303\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/test-cases-writing-tips.jpg\" alt=\"test cases writing tips\" class=\"wp-image-829\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/test-cases-writing-tips.jpg 300w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/test-cases-writing-tips-297x300.jpg 297w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/figure>\n\n\n\n<p><strong>Tips to Write Effective Tests:<\/strong><\/p>\n\n\n\n<p><strong>Keeping the above 5 factors in mind, here are a few tips to write effective TCs.<\/strong><\/p>\n\n\n\n<p><em><strong>Let&#8217;s start!!!<\/strong><\/em><\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#1) Keep it simple but not too simple; make it complex, but not too complex<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>This statement seems a paradox. But, we promise it is not so. Keep all the steps of TCs atomic and precise. Mention the steps with the correct sequence and correct mapping to the expected results. The test case should be self-explanatory and easy to understand. This is what we mean to make it simple.<\/p>\n\n\n\n<p>Now, making it complex means to make it integrated with the Test Plan and other TCs. Refer to the other TCs, relevant artifacts, GUIs, etc. where and when required. But, do this in a balanced way. Do not make a tester move back and forth in the pile of documents to complete a single test scenario.<\/p>\n\n\n\n<p>Do not even let the tester document these TCs compactly. While writing TCs, always remember that you or someone else will have to revise and update these.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>#2) After documenting the Test cases, review them once as a Tester<\/strong><\/mark><\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"188\" height=\"139\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/Test-cases.jpg\" alt=\"Test cases\" class=\"wp-image-15036\"\/><\/figure>\n\n\n\n<p>Never think that the job is done once you have written the last TC of the test scenario. Go to the start and review all the TCs once, but not with the mindset of a TC writer or Testing Planner. Review all TCs with the mind of a tester. Think rationally and try to dry run your TCs.<\/p>\n\n\n\n<p>Evaluate all the Steps and see if you have mentioned these clearly in an understandable way and the expected results are in harmony with those steps.<\/p>\n\n\n\n<p>Ensure that the <a href=\"https:\/\/www.softwaretestinghelp.com\/tips-to-design-test-data-before-executing-your-test-cases\/\">test data<\/a> specified in TCs is feasible not only for actual testers but is according to the real-time environment too. Ensure that there is no dependency conflict among TCs and verify that all the references to other TCs\/artifacts\/GUIs are accurate. Otherwise, the Testers may be in great trouble.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#3) Bound as well as ease the Testers<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>Do not leave the test data on testers. Give them a range of inputs especially where calculations are to be performed or the application&#8217;s behavior depends on inputs. You can let them decide the test data item values but never give them the liberty to choose the test data items themselves.<\/p>\n\n\n\n<p>Because, intentionally or unintentionally, they may use the same test data again &amp; again and some important test data may be ignored during the execution of TCs.<\/p>\n\n\n\n<p>Keep the testers at ease by organizing the TCs as per the testing categories and the related areas of an application. Clearly, instruct and mention which TCs are interdependent and\/or batched. Likewise, explicitly indicate which TCs are independent and isolated so that the tester may manage his overall activity accordingly.<\/p>\n\n\n\n<p>Now, you might be interested to read about boundary value analysis, which is a test case design strategy that is used in black-box testing. Click <a href=\"https:\/\/www.softwaretestinghelp.com\/what-is-boundary-value-analysis-and-equivalence-partitioning\/\">here<\/a> to know more about it.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#4) Be a Contributor<\/mark><\/strong><\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"150\" height=\"158\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/Be-a-Contributor.jpg\" alt=\"Be a Contributor\" class=\"wp-image-15037\"\/><\/figure>\n\n\n\n<p>Never accept the FS or Design Document as it is. Your job is not just to go through the FS and identify the Test Scenarios. Being a QA resource, never hesitate to contribute to the business and give suggestions if you feel that something can be improved in the application.<\/p>\n\n\n\n<p>Suggest to developers too, especially in TC-driven development environment. Suggest the drop-down lists, calendar controls, selection-list, group radio buttons, more meaningful messages, cautions, prompts, improvements related to usability, etc.<\/p>\n\n\n\n<p>Being a QA, don\u2019t just test but make a difference!<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#5) Never Forget the End User<\/mark><\/strong><\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"250\" height=\"223\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2011\/07\/Never-Forget-the-End-User.jpg\" alt=\"Never Forget the End User\" class=\"wp-image-15038\"\/><\/figure>\n\n\n\n<p>The most important stakeholder is the &#8216;End User&#8217; who will finally use the application. So, never forget him at any stage of TC&#8217;s writing. The End User should not be ignored at any stage throughout the SDLC. Yet, our emphasis so far is just related to the topic.<\/p>\n\n\n\n<p>So, during the identification of test scenarios, never overlook those cases that will be mostly used by the user or the cases that are business-critical even if they are less frequently used. Keep yourself in the shoes of the End User and then go through all the TCs and judge the practical value of executing all your documented TCs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How to Achieve Excellence in Test Case Documentation<\/h2>\n\n\n\n<p>Being a software tester, you will surely agree with me that coming up with a perfect Test Document is a challenging task.<\/p>\n\n\n\n<p>We always leave some scope for improvement in our <strong>Test Case Documentation<\/strong>. Sometimes, we cannot provide 100% test coverage through the TCs, and at times, the test template is not up to par, or we lack in providing good readability and clarity to our tests.<\/p>\n\n\n\n<p>As a tester, whenever you are asked to write test documentation, do not just start away in an ad hoc manner. It is very important to understand the purpose of writing test cases well before you work on the documentation process.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2017\/10\/How-to-achieve-excellence-in-test-case-documentation.jpg\"><img decoding=\"async\" width=\"594\" height=\"308\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2017\/10\/How-to-achieve-excellence-in-test-case-documentation.jpg\" alt=\"Achieve Excellence in Test Case Documentation\" class=\"wp-image-16981\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2017\/10\/How-to-achieve-excellence-in-test-case-documentation.jpg 594w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2017\/10\/How-to-achieve-excellence-in-test-case-documentation-300x156.jpg 300w\" sizes=\"(max-width: 594px) 100vw, 594px\" \/><\/a><\/figure>\n\n\n\n<p>The tests should always be clear and lucid. They should be written in a way that offers the tester ease to conduct the complete testing by following the steps defined in each of the tests.<\/p>\n\n\n\n<p>In addition, the test case document should contain as many cases as required to provide complete <a href=\"https:\/\/www.softwaretestinghelp.com\/test-coverage\/\">test coverage<\/a>. <span style=\"text-decoration: underline;\"><strong>For Example<\/strong><\/span>, try to cover the testing for all the possible scenarios that can occur within your software application.<\/p>\n\n\n\n<p><em><strong>Keeping the above points in mind, let&#8217;s now take a tour about How to Achieve Excellence in Test Documentation.<\/strong><\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Useful Tricks for Excellence<\/h3>\n\n\n\n<p>Here, we will explore some useful guidelines that can give you a leg up in your test documentation from the others.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#1) Is your Test Document in Good Shape?<\/mark><\/span><\/h4>\n\n\n\n<p>The best and simplest way to organize your test document is by splitting it into many single useful sections. Divide the entire testing into multiple test scenarios. Then divide each scenario into multiple tests. Finally, divide each case into multiple test steps.<\/p>\n\n\n\n<p>If you are using Excel, then document each test case on a separate sheet of the workbook wherein each test case describes one complete test flow.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#2) Do not Forget to Cover the Negative Cases<\/mark><\/span><\/h4>\n\n\n\n<p>As a software tester, you need to be innovative and draw up all the possibilities that your application comes across. We, as testers, have to verify that if any unauthentic attempt to enter the software or any invalid data to flow across the application should be stopped and reported.<\/p>\n\n\n\n<p>Thus, a negative case is as important as a positive case. Make sure that for each scenario, you have <strong>two test cases- one positive and one negative<\/strong>. The positive one should cover the intended or normal flow and the negative one should cover the unintended or exceptional flow.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#3) Have Atomic Test Steps<\/mark><\/span><\/h4>\n\n\n\n<p>Each test step should be an atomic one. There should not be any further sub-steps. The more simple and clear-headed a test step is, the easier it will be to proceed with testing.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#4) Prioritize the Tests<\/mark><\/span><\/h4>\n\n\n\n<p>We often have stringent timelines to finish testing for an application. Here, we may miss testing some of the important functionalities and aspects of the software. To avoid this, tag a priority with each test while documenting it.<\/p>\n\n\n\n<p>You can use any encoding to define the priority of a test. It is better to use any of the 3 levels, high, medium, and low, or 1, 50, and 100. So, when you have a strict timeline, complete all the high-priority tests first and then move to the medium and low-priority tests.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">For Example,<\/span><\/strong> for a shopping website, verifying access denial for an invalid attempt to log into the app can be a high-priority case, verifying the display of relevant products on the user screen can be a medium-priority case, and verifying the color of the text displayed on the screen buttons can be a low priority test.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#5) Sequence Matters<\/mark><\/span><\/h4>\n\n\n\n<p>Confirm whether the sequence of steps in the test is correct. A wrong sequence of steps can lead to confusion.<\/p>\n\n\n\n<p>Preferably, the steps should also define the entire sequence from entering the app until exiting the app for a particular scenario that is being tested.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#6) Add Timestamp and Tester&#8217;s Name to the Comments<\/mark><\/span><\/h4>\n\n\n\n<p>There may be a case where you are testing an application, and someone is making modifications in parallel to the same app, or someone may update the app after your testing is done. This leads to a situation where your test results can vary with time.<\/p>\n\n\n\n<p>So, it is always better to add a timestamp with the tester&#8217;s name in the testing comments so that a test result (pass or fail) can be attributed to the state of an application at that particular time. Alternatively, you can have an \u2018<strong>Executed Date<\/strong>\u2019 column added separately to the test case, and this will explicitly identify the timestamp of the test.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#7) Include Browser Details<\/mark><\/span><\/h4>\n\n\n\n<p>As you know, if it\u2019s a web application, test results can differ based on the browser on which the test is executed.<\/p>\n\n\n\n<p>For the ease of other testers, developers, or whoever is reviewing the test document, should add the browser name and version to the case so that the defect can be replicated easily.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#8) Keep Two Separate Sheets &#8211; \u2018Bugs\u2019 &amp; \u2018Summary\u2019 in the Document<\/mark><\/span><\/h4>\n\n\n\n<p>If you are documenting in Excel, then the first two sheets of the workbook should be Summary and Bugs. The Summary sheet should summarize the test scenario and the Bugs sheet should list all the issues encountered during testing.<\/p>\n\n\n\n<p>The significance of adding these two sheets is that it will give a clear understanding of the testing to the reader\/user of the document. So, when time is restricted, these two sheets can prove very useful in providing an overview of testing.<\/p>\n\n\n\n<p><strong><em>The test document should provide the best possible test coverage, and excellent readability and should follow one standard format throughout.<\/em><\/strong><\/p>\n\n\n\n<p>We can achieve excellence in test documentation by just keeping a few essential tips in mind as the organization of test case documents, prioritizing the TCs, having everything in proper sequence, including all mandatory details to execute a TC, and providing clear &amp; lucid test steps, etc. as discussed above.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How NOT to Write Tests<\/h2>\n\n\n\n<p>We spend most of our time writing, reviewing, executing, or maintaining these. It is quite unfortunate that tests are also the most error-prone ones. The differences in understanding, organization testing practices, lack of time, etc. are some of the reasons why we often see tests that leave a lot to be desired.<\/p>\n\n\n\n<p>There are a lot of tutorials on our site on this topic, but here will see <em><strong>How NOT to write test cases &#8211; a few tips that will help to create distinctive, quality, and effective tests.<\/strong><\/em><\/p>\n\n\n\n<p>Let\u2019s read on and please note that these tips are for both new and experienced testers.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"482\" height=\"277\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2016\/01\/how-not-to-write-test-cases.png\" alt=\"how not to write test cases\" class=\"wp-image-8325\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2016\/01\/how-not-to-write-test-cases.png 482w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2016\/01\/how-not-to-write-test-cases-300x172.png 300w\" sizes=\"(max-width: 482px) 100vw, 482px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3 Most Common Problems in Test Cases<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Composite steps<\/li>\n\n\n\n<li>Application behavior is taken as expected behavior<\/li>\n\n\n\n<li>Multiple conditions in one case<\/li>\n<\/ol>\n\n\n\n<p>These three have to be on my top 3 list of common problems in the test writing process.<\/p>\n\n\n\n<p>What\u2019s interesting is that these happen with both new and experienced testers and we just keep following the same flawed processes without realizing that a few simple measures can fix things easily.<\/p>\n\n\n\n<p><strong>Let\u2019s get to it and discuss each one:<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#1) Composite Steps<\/mark><\/span><\/h4>\n\n\n\n<p>Firstly, what is a composite step?<\/p>\n\n\n\n<p>For instance, you are giving directions from Point A to Point B: if you say that \u201cGo to XYZ place and then to ABC\u201d this will not make sense, because here we think &#8211; \u201cHow do I get to XYZ in the first place\u201d- instead of starting with \u201cTurn left from here and go 1 mile, then turn right on Rd. no 11 to arrive at XYZ\u201d might achieve better results.<\/p>\n\n\n\n<p>The same rules apply to tests and their steps as well.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">For Example,<\/span><\/strong> I am writing a test for Amazon.com &#8211; place an order for any product.<\/p>\n\n\n\n<p>The following are my test steps (Note: We are only writing the steps and not all the other parts of the test like the expected result etc.)<\/p>\n\n\n\n<p><strong>a<\/strong>. Launch Amazon.com<br><strong>b<\/strong>. Search for a product by entering the product keyword\/name into the \u201cSearch\u201d field on the top of the screen.<br><strong>c<\/strong>. From the search results displayed, choose the first one.<br><strong>d<\/strong>. Click on Add to Cart on the product details page.<br><strong>e<\/strong>. Checkout and pay.<br><strong>f<\/strong>. Check the order confirmation page.<\/p>\n\n\n\n<p>Now, <strong>can you identify which of these is a composite step? <\/strong>Right- Step (e)<\/p>\n\n\n\n<p>Remember, tests are always about \u201cHow\u201d to test, so it is important to write the exact steps of \u201cHow to check out and pay\u201d in your test.<\/p>\n\n\n\n<p><strong>Therefore, the above case is more effective when written as below:<\/strong><\/p>\n\n\n\n<p><strong>a<\/strong>. Launch Amazon.com<br><strong>b<\/strong>. Search for a product by entering the product keyword\/name into the \u201cSearch\u201d field on the top of the screen.<br><strong>c<\/strong>. From the search results displayed, choose the first one.<br><strong>d<\/strong>. Click on Add to Cart on the product details page.<br><strong>e<\/strong>. Click on Checkout on the shopping cart page.<br><strong>f<\/strong>. Enter the CC information, shipping, and billing information.<br><strong>g<\/strong>. Click Checkout.<br><strong>h<\/strong>. Check the order confirmation page.<\/p>\n\n\n\n<p>Therefore, a composite step can be broken down into several individual steps. Next time when we write tests, let\u2019s all pay attention to this part and I am sure you will agree with me that we do this more often than we realize.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#2) Application Behavior is Taken as Expected Behavior<\/mark><\/span><\/h4>\n\n\n\n<p>More and more projects have to deal with this situation these days.<\/p>\n\n\n\n<p>Lack of documentation, Extreme programming, and rapid development cycles are a few reasons that force us to rely on the application (an older version) to either write the tests or to base the testing itself on. As always, this is a proven bad practice- not always.<\/p>\n\n\n\n<p>It is harmless as long as you keep an open mind and keep the expectation that the \u201cAUT could be flawed\u201d. It is only when you do not think that it is, things work badly. As always, we will let the examples do the talking.<\/p>\n\n\n\n<p><strong>If the following is the page you are writing\/designing the test steps for:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"510\" height=\"346\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2016\/01\/tips-for-test-cases.png\" alt=\"tips for test cases\" class=\"wp-image-8326\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2016\/01\/tips-for-test-cases.png 510w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2016\/01\/tips-for-test-cases-300x204.png 300w\" sizes=\"(max-width: 510px) 100vw, 510px\" \/><\/figure>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Case 1:<\/mark><\/strong><\/span><\/p>\n\n\n\n<p><strong>If my test case steps are as below:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Launch the shopping site.<\/li>\n\n\n\n<li>Click on Shipping and Return &#8211; Expected result: The shipping and returns page is displayed with &#8220;Put your info here&#8221; and a &#8220;Continue&#8221; button.<\/li>\n<\/ol>\n\n\n\n<p>Then, this is incorrect.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Case 2:<\/mark><\/strong><\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Launch the shopping site.<\/li>\n\n\n\n<li>Click on Shipping and Return.<\/li>\n\n\n\n<li>In the \u2018Enter the order no\u2019 text box present on this screen, enter the order no.<\/li>\n\n\n\n<li>Click Continue- Expected result: The details of the order related to shipping and returns are displayed.<\/li>\n<\/ol>\n\n\n\n<p>Case 2 is a better test case because even though the reference application behaves incorrectly, we only take it as a guideline, do further research, and write the expected behavior as per the expected correct functionality.<\/p>\n\n\n\n<p><strong>Bottom line:<\/strong> Application as a reference is a quick shortcut, but it comes with its perils. As long as we are careful and critical, it produces amazing results.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">#3) Multiple Conditions in one case<\/h4>\n\n\n\n<p>Once again, let\u2019s learn from an <span style=\"text-decoration: underline;\"><strong>Example<\/strong>.<\/span><\/p>\n\n\n\n<p><strong>Look at the below test steps: The following are the test steps within one test for a login function.<\/strong><\/p>\n\n\n\n<p>a. Enter valid details and click Submit.<br>b. Leave the Username field empty. Click Submit.<br>c. Leave the password field empty and click Submit.<br>d. Choose an already logged-in username\/password and click Submit.<\/p>\n\n\n\n<p>What had to be 4 different cases is combined into one. You might think- What\u2019s wrong with that? It is saving a lot of documentation and what I can do in 4; I am doing it in 1- isn\u2019t that great? Well, not quite. Reasons?<\/p>\n\n\n\n<p><strong>Read on:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>What if one condition fails &#8211; we have to mark the entire test as \u2018failed?\u2019. If we mark the entire case as \u2018failed\u2019, it means all 4 conditions are not working, which isn\u2019t true.<\/li>\n\n\n\n<li>Tests need to have a flow. From precondition to step 1 and throughout the steps. If I follow this case, in step (a), if it is successful, I will be logged onto the page, where the \u201clogin\u201d option is no longer available. So when I get to step (b) &#8211; where is the tester going to enter the username? The flow is broken.<\/li>\n<\/ul>\n\n\n\n<p>Hence, <strong>write modular tests<\/strong>. It sounds like a lot of work, but all it takes for you is to separate things and use our best friends Ctrl+C and Ctrl+V to work for us. \ud83d\ude42<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How to Improve Test Case Efficiency<\/h2>\n\n\n\n<p>The software testers should write their tests from the earlier stage of the software development life cycle, best during the software requirements phase.<\/p>\n\n\n\n<p>The test manager or a QA manager should collect and prepare the maximum possible documents as per the below list.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-case-efficiency.jpg\"><img decoding=\"async\" width=\"485\" height=\"485\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-case-efficiency.jpg\" alt=\"test case efficiency\" class=\"wp-image-6607\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-case-efficiency.jpg 485w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-case-efficiency-150x150.jpg 150w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-case-efficiency-300x300.jpg 300w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-case-efficiency-144x144.jpg 144w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Document Collection for Test Writing<\/h3>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#1) User Requirements Document<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>It is a document that lists the business process, user profiles, user environment, interaction with other systems, replacement of existing systems, functional requirements, non-functional requirements, licensing and installation requirements, performance requirements, security requirements, usability, and concurrent requirements, etc.,<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#2) Business Use Case Document<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>This document details the <a href=\"https:\/\/www.softwaretestinghelp.com\/use-case-testing\/\">use case<\/a> scenario of the functional requirements from the business perspective. This document covers the business actors (or system), goals, pre-conditions, post-conditions, basic flow, alternate flow, options, and exceptions of every business flow of the system under requirements.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#3) Functional Requirements Document<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>This document details the functional requirements of each feature of the system under requirements.<\/p>\n\n\n\n<p>Normally, a functional requirements document serves as a common repository for both the development and testing team as well as for the project stakeholders including the customers for the committed (sometimes frozen) requirements, which should be treated as the most important document for any software development.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#4) Software Project Plan (Optional)<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>A document that describes the details of the project, objectives, priorities, milestones, activities, organization structure, strategy, progress monitoring, risk analysis, assumptions, dependencies, constraints, training requirements, client responsibilities, project schedule, etc.,<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">#5) QA\/Test Plan<\/mark><\/strong><\/span><\/p>\n\n\n\n<p>This document details the quality management system, documentation standards, change control mechanism, critical modules, and functionalities, configuration management system, testing plans, defect tracking, acceptance criteria, etc.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/www.softwaretestinghelp.com\/how-to-write-test-plan-document-software-testing-training-day3\/\">test plan<\/a> document is used to identify the features to be tested, features not to be tested, testing team allocations and their interface, resource requirements, testing schedule, test writing, test coverage, test deliverables, pre-requisite for test execution, bug reporting, and tracking mechanism, test metrics, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Real Example<\/h3>\n\n\n\n<p>Let us see how to efficiently write test cases for a familiar \u2018Login\u2019 screen as per the below figure. The <strong>approach of testing<\/strong> will be almost the same even for complex screens with more information and critical features.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-2.jpg\"><img decoding=\"async\" width=\"482\" height=\"174\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-2.jpg\" alt=\"Login screen\" class=\"wp-image-6560\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-2.jpg 482w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-2-300x108.jpg 300w\" sizes=\"(max-width: 482px) 100vw, 482px\" \/><\/a><\/figure>\n\n\n\n<p><strong>#1)<\/strong> The first approach for any test case process will be to get a screen prototype (or wire-frames) as above, if available. This may not be available for some functionalities and depends on the criticality of designing a prototype in the earlier stages of development.<\/p>\n\n\n\n<p>But, if an <a href=\"https:\/\/www.utdallas.edu\/~chung\/RE\/Presentations07S\/Team_1_Doc\/Documents\/SRS4.0.doc\" target=\"_blank\" rel=\"noopener nofollow\">SRS<\/a>&nbsp;<a href=\"https:\/\/www.softwaretestinghelp.com\/writing-test-cases-from-srs-software-testing-qa-training-day-4\/\">(Software Requirements Specification) document<\/a> is available for the project, most of the screen prototypes are developed by the project team. This kind of screen simplifies the tester&#8217;s job and increases the efficiency of tests.<\/p>\n\n\n\n<p><strong>#2)<\/strong> Next, the <strong>functional requirements specifications<\/strong>. It depends on the organization process, it will be available in a suite of multiple documents.<\/p>\n\n\n\n<p>So, decide the best document for writing cases, either it may be a user requirement document or a functional requirements specifications (or even an SRS document if it can be understandable comfortably by the testing team) which will give a complete functional flow of the selected feature to be tested.<\/p>\n\n\n\n<p><strong>#3)<\/strong> Once the screen prototype and functional specifications are in place, the tester should start writing the cases with the following approach and criteria.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>UI Tests<\/strong>:<\/mark><\/span> The controls\/fields that are visible to the user. There are static control and dynamic controls available for the feature to be tested. <strong><span style=\"text-decoration: underline;\">For Example<\/span>,<\/strong> in the login screen above, the \u2018User Name &amp; Password\u2019 texts are static fields that require no user interaction, just for displaying the text only.<\/li>\n\n\n\n<li><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Functional Cases<\/strong>:<\/mark><\/span> The login button and the Hyperlinks (Forgot Password? &amp; Registration) are dynamic fields that require user interaction by clicking on the controls, which will do some action afterward.<\/li>\n\n\n\n<li><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Database Cases<\/strong>:<\/mark><\/span> Once the user enters the username and password, the tests may be written to check the related database for, whether the username &amp; password are checked in the right database &amp; table, and also the user has permission to log in to the application under test.<strong><br><\/strong><\/li>\n\n\n\n<li><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Process Tests<\/strong>:<\/mark><\/span><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"> <\/mark>This is related to the process (not the actions associated with the visible controls available on the screen) associated with the feature and the functionality. <strong><span style=\"text-decoration: underline;\">For Example<\/span>,<\/strong> clicking the Forgot Password link in the above sample screen may email the user. So, maybe an Email needs to be tested for the proper process and confirmation.<\/li>\n<\/ul>\n\n\n\n<p><strong>4)<\/strong> Finally, keep the \u201c<strong>BAOE mantra<\/strong>\u201d, which means<strong> i) Basic Flow ii) <a href=\"https:\/\/study.com\/academy\/lesson\/exception-alternate-flow-in-use-case.html\" target=\"_blank\" rel=\"noopener nofollow\">Alternate Flow<\/a> iii) Options, and iv) Exceptions<\/strong> for the complete coverage of the functional flow and feature to be tested. Every concept should apply to positive and negative tests.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">For Example<\/span>,<\/strong> let us see the simple BAOE approach for the sample login screen above.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Basic Flow:<\/mark><\/strong><\/span> Enter the URL path of the Login in any browser, enter the information required, and log in to the application.<\/li>\n\n\n\n<li><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Alternate Flow:<\/mark><\/strong><\/span> Install the application on a mobile device, enter the information required, and log in to the application.<\/li>\n\n\n\n<li><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Options:<\/mark><\/strong><\/span> What are the options that are available to come to the same login screen? <strong><span style=\"text-decoration: underline;\">For Example<\/span>,<\/strong> after logging in to the application, clicking the \u2018Logout\u2019 may bring the same screen or if the session timeout or session expires, the user may come to the login screen.<\/li>\n\n\n\n<li><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Exceptions:<\/mark><\/strong><\/span> What are the exceptions if my tests are negative? <strong><span style=\"text-decoration: underline;\">For Example<\/span>,<\/strong> if wrong credentials are entered in the Login screen, the user will get an error message or no action associated.<\/li>\n<\/ul>\n\n\n\n<p>With all this information in hand, let us write the TCs for the login screen, in a format with complete coverage, traceability, and detailed information. The logical sequence and numbering of identifying the \u2018<strong>Test Case ID\u2019 <\/strong>will be very useful for quick identification of the execution history of test cases.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">Also read<\/span> =&gt; <\/strong><a href=\"https:\/\/www.softwaretestinghelp.com\/sample-test-cases-testing-web-desktop-applications\/\">180+ sample ready to use test cases for web and desktop applications.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Test Case Document<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-1.jpg\"><img decoding=\"async\" width=\"485\" height=\"158\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-1.jpg\" alt=\"Test Case efficiency 1\" class=\"wp-image-6559\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-1.jpg 485w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Case-efficiency-1-300x98.jpg 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History.jpg\"><img decoding=\"async\" width=\"485\" height=\"44\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History.jpg\" alt=\"Test Execution History\" class=\"wp-image-6562\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History.jpg 485w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History-300x27.jpg 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History-2.jpg\"><img decoding=\"async\" width=\"485\" height=\"108\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History-2.jpg\" alt=\"Test Execution History 2\" class=\"wp-image-6558\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History-2.jpg 485w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/Test-Execution-History-2-300x67.jpg 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Note<\/strong>: The test columns are not limited to the below sample test document, which can be maintained in an Excel sheet to have as many columns as required for a complete traceability matrix viz., priority, purpose of testing, type of testing, error screenshot location, etc.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">Also read<\/span> =&gt; <a href=\"https:\/\/www.softwaretestinghelp.com\/test-case-template-examples\/\">Sample test case template with examples.<\/a><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-cases.jpg\"><img decoding=\"async\" width=\"485\" height=\"100\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-cases.jpg\" alt=\"test cases\" class=\"wp-image-6561\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-cases.jpg 485w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2015\/07\/test-cases-300x62.jpg 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/figure>\n\n\n\n<p>For the ease of simplicity and readability of this document, let us write the steps to reproduce, the expected, and actual behavior of the tests for the login screen below.<\/p>\n\n\n\n<p><strong>Note<\/strong>: Add the Actual Behavior column at the end of this template.<\/p>\n\n\n\n<div id=\"tablepress-39-scroll-wrapper\" class=\"tablepress-scroll-wrapper\">\n<table id=\"tablepress-39\" class=\"tablepress tablepress-id-39 tablepress-responsive\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">No.<\/th><th class=\"column-2\">Steps to Reproduce<\/th><th class=\"column-3\">Expected Behaviour<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">1.<\/td><td class=\"column-2\">Open a browser and enter the URL for the Login screen.<\/td><td class=\"column-3\">The Login screen should be displayed.<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">2.<\/td><td class=\"column-2\">Install the app in Android phone and open it.<\/td><td class=\"column-3\">The Login screen should be displayed.<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">3.<\/td><td class=\"column-2\">Open the Login screen and check the texts available are correctly spelled.<\/td><td class=\"column-3\">\u2018User Name\u2019 &amp; \u2018Password\u2019 text should be displayed before the related text box. Login button should have the caption \u2018Login\u2019. \u2018Forgot Password?\u2019 And \u2018Registration\u2019 should be available as Links.<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">4.<\/td><td class=\"column-2\">Enter the text in the User Name box.<\/td><td class=\"column-3\">Text can be entered by mouse click or focus using tab.<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">5.<\/td><td class=\"column-2\">Enter the text in the Password box.<\/td><td class=\"column-3\">Text can be entered by mouse click or focus using tab.<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">6.<\/td><td class=\"column-2\">Click the Forgot Password? Link.<\/td><td class=\"column-3\">Clicking the link should take the user to the related screen.<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">7.<\/td><td class=\"column-2\">Click the Registration Link<\/td><td class=\"column-3\">Clicking the link should take the user to the related screen.<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">8.<\/td><td class=\"column-2\">Enter the user name and password and click the Login button.<\/td><td class=\"column-3\">Clicking the Login button should take to the related screen or application.<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">9.<\/td><td class=\"column-2\">Go to the database and check the correct table name is validated against the input credentials.<\/td><td class=\"column-3\">The table name should be validated and a status flag should be updated for successful or failure login.<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">10.<\/td><td class=\"column-2\">Click the Login without entering any text in the User Name and Password boxes.<\/td><td class=\"column-3\">Click the Login button should alert a message box \u2018User Name and Password are Mandatory\u2019.<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-1\">11.<\/td><td class=\"column-2\">Click the Login without entering text in the User Name box, but entering text in Password box.<\/td><td class=\"column-3\">Click the Login button should alert a message box \u2018Password is Mandatory\u2019.<\/td>\n<\/tr>\n<tr class=\"row-13\">\n\t<td class=\"column-1\">12.<\/td><td class=\"column-2\">Click the Login without entering text in the Password box, but entering text in User Name box.<\/td><td class=\"column-3\">Click the Login button should alert a message box \u2018User Name is Mandatory\u2019.<\/td>\n<\/tr>\n<tr class=\"row-14\">\n\t<td class=\"column-1\">13.<\/td><td class=\"column-2\">Enter the maximum allowed text in the User Name &amp; Password boxes.<\/td><td class=\"column-3\">Should accept the maximum allowed 30 characters.<\/td>\n<\/tr>\n<tr class=\"row-15\">\n\t<td class=\"column-1\">14.<\/td><td class=\"column-2\">Enter the User Name &amp; Password starting with the special characters.<\/td><td class=\"column-3\">Should not accept the text starting with special characters, which is not allowed in Registration.<\/td>\n<\/tr>\n<tr class=\"row-16\">\n\t<td class=\"column-1\">15.<\/td><td class=\"column-2\">Enter the User Name &amp; Password starting with blank spaces.<\/td><td class=\"column-3\">Should not accept the text stating with blank spaces, which is not allowed in Registration.<\/td>\n<\/tr>\n<tr class=\"row-17\">\n\t<td class=\"column-1\">16.<\/td><td class=\"column-2\">Enter the text in the password field.<\/td><td class=\"column-3\">Should not display the actual text instead should display asterisk * symbol.<\/td>\n<\/tr>\n<tr class=\"row-18\">\n\t<td class=\"column-1\">17.<\/td><td class=\"column-2\">Refresh the Login page.<\/td><td class=\"column-3\">Page should be refreshed with both User Name and Password fields blank.<\/td>\n<\/tr>\n<tr class=\"row-19\">\n\t<td class=\"column-1\">18.<\/td><td class=\"column-2\">Enter the User Name.<\/td><td class=\"column-3\">Depends on the browser auto fill settings, previously entered user names should be displayed as a dropdown.<\/td>\n<\/tr>\n<tr class=\"row-20\">\n\t<td class=\"column-1\">19.<\/td><td class=\"column-2\">Enter the Password.<\/td><td class=\"column-3\">Depends on the browser auto fill settings, previously entered Passwords should NOT be displayed as a dropdown.<\/td>\n<\/tr>\n<tr class=\"row-21\">\n\t<td class=\"column-1\">20.<\/td><td class=\"column-2\">Move the focus to Forgot Password link using Tab.<\/td><td class=\"column-3\">Both mouse click and enter key should be usable.<\/td>\n<\/tr>\n<tr class=\"row-22\">\n\t<td class=\"column-1\">21.<\/td><td class=\"column-2\">Move the focus to Registration link using Tab.<\/td><td class=\"column-3\">Both mouse click and enter key should be usable.<\/td>\n<\/tr>\n<tr class=\"row-23\">\n\t<td class=\"column-1\">22.<\/td><td class=\"column-2\">Refresh the Login page and press Enter key.<\/td><td class=\"column-3\">The Login button should be focussed and the related action should be fired.<\/td>\n<\/tr>\n<tr class=\"row-24\">\n\t<td class=\"column-1\">23.<\/td><td class=\"column-2\">Refresh the Login page and press Tab key.<\/td><td class=\"column-3\">The first focus in the Login screen should be the User Name box.<\/td>\n<\/tr>\n<tr class=\"row-25\">\n\t<td class=\"column-1\">24.<\/td><td class=\"column-2\">Enter the User and Password and leave the Login page idle for 10 minutes.<\/td><td class=\"column-3\">Message box alert \u2018Session Expired, Enter User Name &amp; Password Again\u2019 should be displayed with both User Name &amp; Password fields cleared.<\/td>\n<\/tr>\n<tr class=\"row-26\">\n\t<td class=\"column-1\">25.<\/td><td class=\"column-2\">Enter the Login URL in Chrome, Firefox &amp; Internet Explorer browsers.<\/td><td class=\"column-3\">Same Login screen should be displayed without much deviation on the look and feel and alignment of text and form controls.<\/td>\n<\/tr>\n<tr class=\"row-27\">\n\t<td class=\"column-1\">26.<\/td><td class=\"column-2\">Enter the Login credentials and check Login activity in Chrome, Firefox &amp; Internet Explorer browsers.<\/td><td class=\"column-3\">The action of Login button should be one and the same in all the browsers.<\/td>\n<\/tr>\n<tr class=\"row-28\">\n\t<td class=\"column-1\">27.<\/td><td class=\"column-2\">Check the Forgot Password and Registration link is not broken in Chrome, Firefox &amp; Internet Explorer browsers.<\/td><td class=\"column-3\">Both the links should take to the relative screens in all the browsers.<\/td>\n<\/tr>\n<tr class=\"row-29\">\n\t<td class=\"column-1\">28.<\/td><td class=\"column-2\">Check the Login functionality is working properly in Android mobile Phones.<\/td><td class=\"column-3\">The Login feature should work the same way as it is available in the web version.<\/td>\n<\/tr>\n<tr class=\"row-30\">\n\t<td class=\"column-1\">29.<\/td><td class=\"column-2\">Check the Login functionality is working properly in Tab and iPhones.<\/td><td class=\"column-3\">The Login feature should work the same way as it is available in the web version.<\/td>\n<\/tr>\n<tr class=\"row-31\">\n\t<td class=\"column-1\">30.<\/td><td class=\"column-2\">Check the Login screen allows the concurrent users of the system and all the users are getting the Login screen without delays and within the defined time of 5-10 seconds.<\/td><td class=\"column-3\">This should be achieved using many combination of operating system and browsers either physically or virtually or can be achieved using some performance \/ load testing tool.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<!-- #tablepress-39 from cache -->\n\n\n<h3 class=\"wp-block-heading\">Test Data Collection<\/h3>\n\n\n\n<p>When the test case is being written, the most important task for any tester is to collect the test data. This activity is skipped and overlooked by many testers with the assumption that the test cases can be executed with some sample data or dummy data and can be fed when the data is required.<\/p>\n\n\n\n<p>This is a critical misconception that feeding sample data or input data from the mind memory at the time of executing test cases.<\/p>\n\n\n\n<p>If the data is not collected and updated in the test document at the time of writing the tests, then the tester would spend abnormally more time collecting the data at the time of test execution. The test data should be collected for both positive and negative cases from all the perspectives of the functional flow of the feature. The business use case document is very useful in this situation.<\/p>\n\n\n\n<p>Find a sample test data document for the tests written above, which will be helpful in how effectively we can collect the data, which will ease our job at the time of test execution.<\/p>\n\n\n\n<div id=\"tablepress-42-scroll-wrapper\" class=\"tablepress-scroll-wrapper\">\n<table id=\"tablepress-42\" class=\"tablepress tablepress-id-42 tablepress-responsive\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Sl.No.<\/th><th class=\"column-2\">Purpose of Test Data<\/th><th class=\"column-3\">Actual Test Data<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">1.<\/td><td class=\"column-2\">Test the proper user name and password<\/td><td class=\"column-3\">Administrator (admin2015)<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">2.<\/td><td class=\"column-2\">Test the maximum length of user name and password<\/td><td class=\"column-3\">Administrator of the Main System (admin2015admin2015admin2015admin)<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">3.<\/td><td class=\"column-2\">Test the blank spaces for the user name and password<\/td><td class=\"column-3\">Enter blank spaces using space key for user name and password<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">4.<\/td><td class=\"column-2\">Test the improper user name and password <\/td><td class=\"column-3\">Admin (Activated) (digx##$taxk209)<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">5.<\/td><td class=\"column-2\">Test the user name and password with uncontrolled spaces between.<\/td><td class=\"column-3\">Admin                     istrator (admin      2015)<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">6.<\/td><td class=\"column-2\">Test the user name and password starting with special characters<\/td><td class=\"column-3\">$%#@#$Administrator (%#*#**#admin)<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">7.<\/td><td class=\"column-2\">Test the user name and password with all small characters<\/td><td class=\"column-3\">administrator (admin2015)<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">8.<\/td><td class=\"column-2\">Test the user name and password with all capital characters<\/td><td class=\"column-3\">ADMINISTRATOR (ADMIN2015)<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">9.<\/td><td class=\"column-2\">Test the Login with the same user name and password with multiple systems concurrently at the same time.<\/td><td class=\"column-3\">Administrator (admin2015) &#8211; for Chrome in the same machine and different machine with operating system Windows XP, Windows 7, Windows 8 and Windows Server.<br \/>\n<br \/>\nAdministrator (admin2015) &#8211; for Firefox in the same machine and different machine with operating system Windows XP, Windows 7, Windows 8 and Windows Server.<br \/>\n<br \/>\nAdministrator (admin2015) &#8211; for Internet Explorer in the same machine and different machine with operating system Windows XP, Windows 7, Windows 8 and Windows Server.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">10.<\/td><td class=\"column-2\">Test the Login with the user name and password in the mobile application.<\/td><td class=\"column-3\">Administrator (admin2015) \u2013 for Safari and Opera in Android Mobiles, iPhones and Tablets.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<!-- #tablepress-42 from cache -->\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Importance of Standardizing the Test Cases<\/h2>\n\n\n\n<p>In this busy world, no one can do repetitive things day in and day out with the same level of interest and energy. Especially, I am not passionate about doing the same task again and again at work. I like managing things and saving time.&nbsp;Anyone in IT should be so.<\/p>\n\n\n\n<p>All IT companies execute different projects. These projects can either be product-based or service-based. Out of these projects, most of them work around websites and <a href=\"https:\/\/www.softwaretestinghelp.com\/web-application-testing\/\">website testing<\/a>. The good news about it is, that all websites have many similarities. If the websites are for the same domain, then they have several common features too.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"593\" height=\"308\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2017\/11\/Standardizing-Test-Cases.jpg\" alt=\"Test case reuse\" class=\"wp-image-17794\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2017\/11\/Standardizing-Test-Cases.jpg 593w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2017\/11\/Standardizing-Test-Cases-300x156.jpg 300w\" sizes=\"(max-width: 593px) 100vw, 593px\" \/><\/figure>\n\n\n\n<p>The question that always baffles me is that: \u201cIf most applications are similar, <span style=\"text-decoration: underline;\"><strong>for example:<\/strong><\/span> such as retail sites, which have been tested a thousand times before, \u201cWhy do we need to write test cases for yet another retail site from scratch?\u201d Won\u2019t it save a ton of time to pull out the existing test scripts that were used to test a previous retail site?<\/p>\n\n\n\n<p>Sure, there might be some small tweaks that we might have to do, but overall it is easier, efficient, time &amp; money-saving too, and always helps to keep the interest levels of the testers high.<\/p>\n\n\n\n<p>Who likes to write, review, and maintain the same test cases repeatedly, right? Reusing the existing tests can solve this to a great extent and your clients will find this smart and logical too.<\/p>\n\n\n\n<p>So logically, I started pulling the existing scripts from similar web-based projects, made changes, and did a quick review of them. I also used color-coding to show the changes that were made, so that the reviewer can only focus on the part that has been changed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Reasons to Reuse Test Cases<\/h3>\n\n\n\n<p><strong>#1)<\/strong> Most functional areas of a website are almost- login, registration, add to cart, wish list, checkout, shipping options, payment options, product page content, recently viewed, relevant products, promo code facilities, etc.<\/p>\n\n\n\n<p><strong>#2)<\/strong> Most of the projects are just enhancements or changes to the existing functionality.<\/p>\n\n\n\n<p><strong>#3)<\/strong> Content management systems that define the slots for image uploads in static and dynamic ways are also common for all websites.<\/p>\n\n\n\n<p><strong>#4)<\/strong> Retail websites have a <strong>CSR<\/strong> (Customer Service) system too.<\/p>\n\n\n\n<p><strong>#5)<\/strong> Backend systems and warehouse applications using JDA are also used by all websites.<\/p>\n\n\n\n<p><strong>#6)<\/strong> The concept of cookies, timeout, and security are common too.<\/p>\n\n\n\n<p><strong>#7)<\/strong> Web-based projects are frequently prone to requirement changes.<\/p>\n\n\n\n<p><strong>#8)<\/strong> The <a href=\"https:\/\/www.softwaretestinghelp.com\/types-of-software-testing\/\">types of testing<\/a> needed are common, like browser <a href=\"https:\/\/www.softwaretestinghelp.com\/software-compatibility-testing\/\">compatibility testing<\/a>, <a href=\"https:\/\/www.softwaretestinghelp.com\/introduction-to-performance-testing-loadrunner-training-tutorial-part-1\/\">performance testing<\/a>, <a href=\"https:\/\/www.softwaretestinghelp.com\/how-to-test-application-security-web-and-desktop-application-security-testing-techniques\/\">security testing<\/a><\/p>\n\n\n\n<p>There is plenty that is common and similar. Reusability is the way to go. Sometimes the modifications themselves may or may not take more or less time. Sometimes one may feel it is better to start from scratch than to modify so much.<\/p>\n\n\n\n<p>This can be easily handled by creating a set of standard test cases for each of the common functionality.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What is a Standard Test in Web Testing?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create test cases that are complete &#8211; steps, data, variables, etc. This will ensure that the non-similar data\/variable can simply be replaced when a similar test case is required.<\/li>\n\n\n\n<li>The entrance and exit criteria should be properly defined.<\/li>\n\n\n\n<li>The modifiable steps or the statement in the steps should be highlighted in a different color for quick find and replace.<\/li>\n\n\n\n<li>The language used for the standard test case creation should be generic.<\/li>\n\n\n\n<li>All the features of each website should be covered in the test cases.<\/li>\n\n\n\n<li>The name of the test cases should be the name of the functionality or the feature that the test case is covering. This will make the finding of the test case from the set much easier.<\/li>\n\n\n\n<li>If there is any basic or standard sample or GUI file or screenshot of the feature, then it should be attached with the relevant steps.<\/li>\n<\/ul>\n\n\n\n<p>By using the above tips, one can create a set of standard scripts and use them with little or required modifications for different websites.<\/p>\n\n\n\n<p>These standard test cases can be automated too, but once again, focusing on reusability is always a plus. Also, if <a href=\"https:\/\/www.softwaretestinghelp.com\/automation-testing-tutorial-1\/\">automation<\/a> is based on a GUI, reusing the scripts across multiple URLs or sites is something I never found effective.<\/p>\n\n\n\n<p>Using a standard set of manual test cases for different websites with minor modifications is the best way to carry a website testing. All we need is to create and maintain the test cases with proper standards and use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Improving Test Case Efficiency is not a simply defined term, but it\u2019s an exercise and can be achieved through a matured process and regular practice.<\/p>\n\n\n\n<p>The testing team should not be tired of getting involved in the improvement of such tasks, as it is the best tool for greater achievements in the quality world. This is proven in many of the testing organizations worldwide on mission-critical projects and complex applications.<\/p>\n\n\n\n<p><em><strong>Hope you would have gained immense knowledge on the concept of Test Cases. Check out our series of tutorials to know more about test cases and express your thoughts in the comments section below!<\/strong><\/em><\/p>\n\n\n\n<p><strong><a href=\"https:\/\/www.softwaretestinghelp.com\/test-case-template-examples\/\">Next Tutorial<\/a><\/strong><\/p>\n\n\n\n<p><\/p>\n\r\n\t\t\t<div id=\"daexthefup-container\"\r\n\t\t\t\tclass=\"daexthefup-container daexthefup-layout-stacked daexthefup-alignment-center\"\r\n\t\t\t\tdata-post-id=\"65\">\r\n\r\n\t\t\t\t<div class=\"daexthefup-feedback\">\r\n\t\t\t\t\t<div class=\"daexthefup-text\">\r\n\t\t\t\t\t\t<h3 class=\"daexthefup-title\">Was this helpful?<\/h3>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"daexthefup-buttons-container\">\r\n\t\t\t\t\t\t<div class=\"daexthefup-buttons\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t<div class=\"daexthefup-yes daexthefup-button daexthefup-button-type-icon\" data-value=\"1\">\r\n\t\t\t\t\r\n                <svg>\r\n                    <defs>\r\n                        <style>.thumb-up-cls-1{fill:#c9c9c9;}.thumb-up-cls-2{fill:#e1e1e1;}.thumb-up-cls-3{fill:#676767;}<\/style>\r\n                    <\/defs>\r\n                    <g id=\"thumb_up\">\r\n                        <path class=\"thumb-up-cls-2 daexthefup-icon-circle\" d=\"m24,3c11.58,0,21,9.42,21,21s-9.42,21-21,21S3,35.58,3,24,12.42,3,24,3m0-1C11.85,2,2,11.85,2,24s9.85,22,22,22,22-9.85,22-22S36.15,2,24,2h0Z\" \/>\r\n                        <g>\r\n                            <rect class=\"thumb-up-cls-3 daexthefup-icon-secondary-color\" x=\"10\" y=\"20\" width=\"6\" height=\"15\" rx=\"1.5\" ry=\"1.5\" \/>\r\n                            <path class=\"thumb-up-cls-1 daexthefup-icon-primary-color\" d=\"m30.57,9.06l-.49-.1c-.81-.17-1.61.35-1.78,1.16l-5.3,11.74c-.17.81,3.16,1.61,3.97,1.78l1.96.41c.81.17,1.61-.35,1.78-1.16l2.18-10.27c.34-1.61-.7-3.21-2.31-3.56Z\" \/>\r\n                            <path class=\"thumb-up-cls-1 daexthefup-icon-primary-color\" d=\"m38.17,20h-18.67c-.83,0-1.5.67-1.5,1.5v12c0,.83.67,1.5,1.5,1.5h16.27c.71,0,1.33-.5,1.47-1.21l2.4-12c.19-.93-.53-1.8-1.47-1.8Z\" \/>\r\n                        <\/g>\r\n                    <\/g>\r\n                <\/svg>\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t<div class=\"daexthefup-no daexthefup-button daexthefup-button-type-icon\" data-value=\"0\">\r\n\t\t\t\t\r\n                <svg>\r\n                    <defs>\r\n                        <style>.thumb-down-cls-1{fill:#c9c9c9;}.thumb-down-cls-2{fill:#e1e1e1;}.thumb-down-cls-3{fill:#676767;}<\/style>\r\n                    <\/defs>\r\n                    <g id=\"thumb_down\">\r\n                        <path class=\"thumb-down-cls-2 daexthefup-icon-circle\" d=\"m24,3c11.58,0,21,9.42,21,21s-9.42,21-21,21S3,35.58,3,24,12.42,3,24,3m0-1C11.85,2,2,11.85,2,24s9.85,22,22,22,22-9.85,22-22S36.15,2,24,2h0Z\" \/>\r\n                        <g>\r\n                            <rect class=\"thumb-down-cls-3 daexthefup-icon-secondary-color\" x=\"10\" y=\"13\" width=\"6\" height=\"15\" rx=\"1.5\" ry=\"1.5\" \/>\r\n                            <path class=\"thumb-down-cls-1 daexthefup-icon-primary-color\" d=\"m30.57,38.94l-.49.1c-.81.17-1.61-.35-1.78-1.16l-5.3-11.74c-.17-.81,3.16-1.61,3.97-1.78l1.96-.41c.81-.17,1.61.35,1.78,1.16l2.18,10.27c.34,1.61-.7,3.21-2.31,3.56Z\" \/>\r\n                            <path class=\"thumb-down-cls-1 daexthefup-icon-primary-color\" d=\"m38.17,28h-18.67c-.83,0-1.5-.67-1.5-1.5v-12c0-.83.67-1.5,1.5-1.5h16.27c.71,0,1.33.5,1.47,1.21l2.4,12c.19.93-.53,1.8-1.47,1.8Z\" \/>\r\n                        <\/g>\r\n                    <\/g>\r\n                <\/svg>\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div class=\"daexthefup-comment\">\r\n\t\t\t\t\t<div class=\"daexthefup-comment-top-container\">\r\n\t\t\t\t\t\t<label id=\"daexthefup-comment-label\" class=\"daexthefup-comment-label\"><\/label>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"daexthefup-comment-character-counter-container\">\r\n\t\t\t\t\t\t\t\t<div id=\"daexthefup-comment-character-counter-number\"\r\n\t\t\t\t\t\t\t\t\tclass=\"daexthefup-comment-character-counter-number\"><\/div>\r\n\t\t\t\t\t\t\t\t<div class=\"daexthefup-comment-character-counter-text\"><\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<textarea id=\"daexthefup-comment-textarea\" class=\"daexthefup-comment-textarea\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Type your message\"\r\n\t\t\t\t\t\t\t\tmaxlength=\"\r\n\t\t\t\t\t\t\t\t400\t\t\t\t\t\t\t\t\t\"><\/textarea>\r\n\t\t\t\t\t<div class=\"daexthefup-comment-buttons-container\">\r\n\t\t\t\t\t\t<button class=\"daexthefup-comment-submit daexthefup-button\">Submit<\/button>\r\n\t\t\t\t\t\t<button class=\"daexthefup-comment-cancel daexthefup-button\">Cancel<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div class=\"daexthefup-successful-submission-text\">Thanks for your feedback!<\/div>\r\n\r\n\t\t\t<\/div>\r\n\r\n\t\t\t","protected":false},"excerpt":{"rendered":"<p>Writing effective test cases is a skill and that can be achieved by some experience and in-depth study of the application on which test cases are being written.<br \/>\nHere I will share some tips on how to write test cases, test case procedures and some basic test case definitions. <\/p>\n","protected":false},"author":1,"featured_media":313087,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_helpful_pro_status":1,"footnotes":""},"categories":[562],"tags":[],"class_list":["post-65","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-test-planning-and-strategy"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/posts\/65","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/comments?post=65"}],"version-history":[{"count":0,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/posts\/65\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/media\/313087"}],"wp:attachment":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/media?parent=65"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/categories?post=65"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/tags?post=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}