Build your product with the right quality strategy, process, and plan with an PM and QA expert, Olena Kapitanenko
Tags: product
Published: 2023-04-03 17:39:13

<img src="https://quickbooks.intuit.com/oidam/intuit/sbseg/en_us/Blog/Illustration/pricing-strategy-header-image-us-en.png">
<p dir="ltr">We are excited to have with us today <a href="https://www.linkedin.com/in/ekapitanenko/">Olena Kapitanenko</a>, a highly skilled IT expert with a wealth of experience as a Project Lead/Business Process Analyst, Trainer at Svitla Systems, Inc., a successful software company with Ukrainian roots. Olena is a problem solver with a passion for improving business processes and mentoring teams to achieve their goals. Prior to her current role, Olena worked as a Quality Assurance Manager/Business Analyst at HotelFriend AG, a well-known startup in the field of hospitality, where she honed her skills in testing mobile apps, websites, and hotel management systems. We are looking forward to learning more about her experience and insights into the world of IT.</p>
<p dir="ltr">There are a lot of approaches how to build a proper product within such dimensions: scope, time, resources, users, product quality, and project quality. I want to share my hands-on experience with how to link the latter with the rest. I can recommend checking ISO and ISTQB standards and expanding the list of a minimal suit I use in my endeavors usually and sharing in the article below.&nbsp;&nbsp;</p>
<p dir="ltr"><strong>Test Strategy</strong></p>
<p dir="ltr">Usually 2-3 pages with links for sections and links - it&rsquo;s the heart of the QA process.</p>
<p dir="ltr" role="presentation"><strong>1) Environment Requirements</strong></p>
<p dir="ltr" role="presentation">Set of targeted devices. For example:</p>
<p dir="ltr"><img src="https://lh6.googleusercontent.com/QB4VuYgTkshEPBDw9bfj5xJYfeRrlthZRNrgK6VKk8DQ8xYvvs9PjNT6dtkb2ivLXkx5Ustf2hmdfC9t1R8uQHqVTmNMS2J3mpihvOaFiKLz_GG29pLPqTbLBZZuOg_p4Fu2CZjAb8eYKG_t4YVGflM" width="665" height="276"></p>
<ol start="2">
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Supported OS. For example for mobile,&nbsp; on Android and iOS<img src="https://lh5.googleusercontent.com/3kJVdJFKABJB3yjLQpYhVKzCaDuxii7URymI9BaWGASCigchYrDmS929qj-Dgx9zjavyqiGD3oX6ifWG9zR2GyPv-wDiYZQLoVc46UNdEKP0ucMBhUcXxqtYHuisbv6aOjXtyJ048BG_fhlKfABtPu0" width="665" height="165"></p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">List of browsers with roles to be supported. E.g.</p>
</li>
</ol>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">priority#1: Chrome for usertype#1</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">priority#2: Safary for usertype#2</p>
</li>
</ul>
<p><strong>&nbsp;</strong></p>
<p dir="ltr"><strong>2) Testing Tools and Testing Management Systems</strong></p>
<p dir="ltr">The QA team performs the manual testing with the [TMS] as a tool for testing documentation&nbsp;</p>
<p dir="ltr">For Test Management System we describe roles and main quants of work. E.g. for Test Rail we use:</p>
<p dir="ltr"><strong>Test Cases</strong></p>
<p dir="ltr">The QA writes the test case or a checklist for the story which describes the feature or a part of it. The QA shall decide which type of test case is suitable for a specific case: a test case or a checklist&nbsp;</p>
<p dir="ltr">A test case template shall be used to describe the use case in detail steps to get the single expected result. A checklist type can be used to cover the maximum steps through the feature testing with multiple expected results for each step.</p>
<p dir="ltr"><strong>Test Runs</strong></p>
<p dir="ltr">The QA shall run the test runs in test rails in case of:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">testing the completed story&nbsp;</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">each story shall have the completed test run based on a test suite</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">regression testing</p>
</li>
</ul>
<p dir="ltr">Regression testing test runs to cover the whole system which needs to be tested before the release</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">smoke testing</p>
</li>
</ul>
<p dir="ltr">Smoke testing test run covers important functionality which needs to be tested after the refactoring/release/etc</p>
<p dir="ltr">For test automation we use those tools:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Rest API with a dev&rsquo;s framework + postman</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">integration level (usually CI/CD friendly)</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">functional level (xunit)</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">for performance testing (junit, TestComplete)</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">etc.</p>
</li>
</ul>
<p dir="ltr"><strong>3) Testing Types</strong></p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Unit. Integration testing is conducted after unit testing, where the functional correctness of the smallest piece of code, or unit, is tested and performed by developers.</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Integration. Integration testing is conducted after unit testing, where the functional correctness of the smallest piece of code, or unit, is tested</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Smoke. Whenever the new functionalities of the software are developed and integrated with an existing build that is deployed in the QA environment. Smoke testing ensures that all critical functionalities are working correctly or not.</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Regression. Regression testing should be performed whenever the codebase has been modified or altered in any way to verify any previously discovered issues marked as fixed.</p>
</li>
</ul>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Regression will be executed for:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">the specific functionality after the new changes or critical bug fix</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">production release&nbsp;</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">refactoring</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">integration with external API</p>
</li>
</ul>
<p dir="ltr">Acceptance. User Acceptance Testing is formal testing conducted to determine whether a system satisfies its acceptance criteria</p>
<p dir="ltr">Compatibility. Compatibility testing - is testing the application or product built with a different computing environment. Especially it relates to the new mobile builds or platform (iOS/Android) version updates.</p>
<p dir="ltr"><strong>Common process agreement</strong></p>
<p dir="ltr">To be crafted with a team and stakeholders to have a common understanding of the process, its inputs, and outputs. Examples are below</p>
<p dir="ltr">General</p>
<p dir="ltr">The QA team provides product testing during the sprint.&nbsp;</p>
<p dir="ltr">At the start of each sprint, the team lead assigns the QA sub-tasks to QA members for the sprint stories.&nbsp;</p>
<p dir="ltr">The assigned QA is responsible for:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Writing the documentation (test cases/checklists) in [TMS]</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Provide the story testing after all dev tasks are done</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Re-test the fixed bugs</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Send the story to BA review after all ACs and bugs are tested</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Provide the testing for the product during the sprint to search for other defects</p>
</li>
</ul>
<p dir="ltr">Bugs Types</p>
<p dir="ltr">The QA team uses 2 bug issue types during the QA process:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">bug. The bug is a separate issue not related to any of the sprint stories.&nbsp;</p>
</li>
</ul>
<p dir="ltr">The bug is assigned to the team tech lead so they would know the scope and list of all bugs</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">sub-bug (The sub-bug is a type of sub-task within a separate story). The sub-bug is assigned to the dev team who developed the Acceptance Criteria</p>
</li>
</ul>
<p dir="ltr">During the testing, QA finds the bugs and creates them as a sub-bug type to manage them within 1 story with correct priority.</p>
<p dir="ltr">During the sprint story testing, all bugs related to AC&rsquo;s story shall be created as a sub-bug</p>
<p dir="ltr">The sub-bugs with Medium and higher priority shall be fixed in the scope of the sprint</p>
<p dir="ltr">At the end of the sprint, the sub-bugs which are not yet fixed shall be reviewed, unlinked to separate issue types, and moved out of the story or sprint based on priority.</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Bug flow</p>
<p dir="ltr">The bugs issue type is created for functionality that is not related to any sprint goals or taken story</p>
<p dir="ltr">Example: broken functionality for already done stories after some refactoring or changes</p>
<p dir="ltr">The found bugs shall be created and moved to the backlog</p>
<p dir="ltr">On the sprint grooming/planning, the team shall review backlog bugs, estimate them and take them to the sprint if the priority asks or the team has some capacity to fix it</p>
<p dir="ltr">Only the bugs with High or Highest priority shall be moved to the sprint after the sprint has already started with the PO approval</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Bug Priority</p>
<p dir="ltr">The QA is responsible for assigning the correct bug priority for any bug issue type</p>
<p dir="ltr">The CD3P Jira flow suggests the following priorities:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Highest</p>
</li>
</ul>
<p dir="ltr">Such an error makes it impossible to proceed with using or testing the software - System crash, a blocker of functionality to test, no workaround, demo blocker, release blocker, etc</p>
<p dir="ltr">The defect is critical to the product and has to be resolved as soon as possible</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">High</p>
</li>
</ul>
<p dir="ltr">It is an incorrect functioning of a particular area of business-critical software functionality, like unsuccessful installation or failure of its main features. - wrong functional AC result, operation error</p>
<p dir="ltr">The defect is critical to the product and has to be resolved as soon as possible</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Medium</p>
</li>
</ul>
<p dir="ltr">An error has a significant impact on an application, but other inputs and parts of the system remain functional, so you can still use it</p>
<p dir="ltr">The error doesn&rsquo;t require urgent resolution and can be fixed during the sprint if the team has the capacity or move to the next one (as an example)</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Low</p>
</li>
</ul>
<p dir="ltr">A defect is confusing or causes undesirable behavior but doesn&rsquo;t affect user experience significantly</p>
<p dir="ltr">The bug isn&rsquo;t serious, so it can be resolved after the critical defects are fixed or not fixed at all</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Lowest</p>
</li>
</ul>
<p dir="ltr">A bug doesn&rsquo;t affect the functionality or isn&rsquo;t evident. It can be a problem with third-party apps, grammar or spelling mistakes, etc.</p>
<p dir="ltr">The bug isn&rsquo;t serious, so it can be resolved after the critical defects are fixed or not fixed at all</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Bug Template</p>
<p dir="ltr">The QA team shall proceed with the following template upon bug creation:</p>
<p dir="ltr">&nbsp;</p>
<p dir="ltr">Preconditions (if any)</p>
<p dir="ltr">1. Step 1</p>
<p dir="ltr">2. Step 2</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Steps to Reproduce (aka STR)</p>
<p dir="ltr">1. Step 1</p>
<p dir="ltr">2. Step 2</p>
<p dir="ltr">..</p>
<p dir="ltr">8. Step 8</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Actual Result (aka AR)</p>
<p dir="ltr">*The result received after performing a test case or testing the AC*</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Required attachments if possible:</p>
<p dir="ltr">1. screenshot</p>
<p dir="ltr">2. gifs</p>
<p dir="ltr">3. screen recording/video</p>
<p dir="ltr">4. logs</p>
<p dir="ltr">4.1 browser console or network errors</p>
<p dir="ltr">4.2 logs from mobile taken from android studio or Xcode</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Expected Result (aka ER)</p>
<p dir="ltr">*An ideal result that the tester should get after the test case is performed*</p>
<p dir="ltr">The tester can indicate:</p>
<p dir="ltr">1. The AC from the story</p>
<p dir="ltr">2. The UI link design from Figma</p>
<p><strong><br><br></strong></p>
<p dir="ltr"><strong>Planning</strong></p>
<p dir="ltr">To convert strategy to a plan we go through the process above, for different types of QA, QC and testing we have to determine:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Team-level roles. E.g. SDET for [type of work], Test Designer for [description of work], Test Executor for [...]</p>
</li>
</ul>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Timeline vs Scope</p>
</li>
</ul>
<p dir="ltr">There are also possible butches of Test plans to be implemented for a large rollout.</p>
<p dir="ltr">For example, it might be a plan with a 10 Test Run for Manual QA and Penetration testing in UAT staging before a major release.&nbsp;</p>
<p><strong>&nbsp;</strong></p>
<p dir="ltr">Each plan regardless of scale should contain:</p>
<ul>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Scope of work: test design, testing execution, expected reports or other outcomes</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Time for SoW above</p>
</li>
<li dir="ltr" aria-level="1">
<p dir="ltr" role="presentation">Specific executors</p>
</li>
</ul>