<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Anna Dolnyk on Medium]]></title>
        <description><![CDATA[Stories by Anna Dolnyk on Medium]]></description>
        <link>https://medium.com/@anna-dolnyk?source=rss-1b313debd831------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*7F6KAKoa_Bk9V7hYfpT6IQ.jpeg</url>
            <title>Stories by Anna Dolnyk on Medium</title>
            <link>https://medium.com/@anna-dolnyk?source=rss-1b313debd831------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 22:40:18 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@anna-dolnyk/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Honey, we’re killing Scrum teams or QA Manager’s unforgivable sins in Scrum]]></title>
            <link>https://anna-dolnyk.medium.com/honey-were-killing-scrum-teams-or-qa-manager-s-unforgivable-sins-in-scrum-485729170e00?source=rss-1b313debd831------2</link>
            <guid isPermaLink="false">https://medium.com/p/485729170e00</guid>
            <category><![CDATA[agile]]></category>
            <category><![CDATA[scrum]]></category>
            <category><![CDATA[qa]]></category>
            <dc:creator><![CDATA[Anna Dolnyk]]></dc:creator>
            <pubDate>Wed, 03 Jun 2020 18:56:05 GMT</pubDate>
            <atom:updated>2020-06-03T18:58:53.183Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VKXURPVC8tech1KfJ6KOtQ.png" /></figure><p><em>This article is my personal opinion, and I’m happy to hear your thoughts about this topic.</em></p><p>Nowadays, more and more companies start to adopt Agile practices to transform the organization’s structure to perform in a flexible and fast-changing environment efficiently. This transformation usually involves the restructuring of the existing roles and departments.</p><p>I was working in several software companies that decided to move from separate developers/QA/designers departments to Scrum teams (Feature teams). This article is my personal experience and thoughts on a QA manager role in Scrum teams. I was lucky to be on both sides during these transformations — as a QA engineer and as a QA department lead. It helps me to assess the situation from different perspectives.</p><p>First of all, let’s recall the classical <strong>QA manager job requirements</strong>:</p><ul><li>manage the QA team</li><li>communicate with other departments to coordinate QA efforts</li><li>take responsibility for the product quality</li><li>establish QA policies and practices across the QA team</li><li>monitor and report about QA team activities</li></ul><p>On the other hand, in Scrum (one of the Agile frameworks), we can differentiate the following roles:</p><ul><li>Scrum Master</li><li>Product Owner</li><li>Scrum Team</li><li>Stakeholders</li></ul><p>The Scrum team, in particular, includes a mixture of competencies, e.g., developers, QA engineers, designers, analysts, etc. The core features of the Scrum team is that it is self-organized and cross-functional:</p><ul><li><strong>Self-organized:</strong> decide how to work without any assistance from non-team members</li><li><strong>Cross-functional:</strong> have the necessary skills to complete the work without depending on non-team members</li></ul><p>In some companies, the Scrum team has a formal or informal Team lead who acts as a team coordinator and a team representative. We call this role variously: Team lead, Technical lead, Delivery manager, Engineering manager. Usually, it’s a formal role for companies that can’t give up the idea that each employee must have a manager who tracks the employee’s performance and gives approvals for a vacation :)</p><p>This article is not about Scrum, so I’m not going to describe each role in detail. One of the main points is that there is <strong>no dedicated QA team</strong> in a Scrum environment, so there is <strong>no QA Manager role</strong>.</p><p>Typically, the QA Manager role stays in a company as an echo of the old structure. In the best-case scenario, this role can be transformed into a QA Mentor or QA Architect. But frequently, the QA manager stays isolated from the product development process and, in the worst-case scenario, attempts to continue their past activities, making a lot of unforgivable mistakes.</p><h3><strong>Continue managing</strong></h3><p>As far as QA specialists are the part of the Scrum team, they are not supposed to report to a QA manager who is not involved in team activities. All their tasks and efforts should be coordinated with Scrum team members. Their performance should be assessed in terms of achieving team goals. Thus there is no sense to set separate QA goals that are not correlated with Scrum team activities and objectives.</p><p><strong>Summary:</strong> The QA Manager should stop managing and <strong>start mentoring</strong> in case the Scrum team asks for assistance from a highly qualified QA professional. Undoubtedly, assigning tasks directly to QA engineers in Scrum teams without communication with PO, Scrum Master, and Team lead — is the common mistake. This approach undermines the idea of Scrum since all tasks must be prioritized and evaluated by the team.</p><h3><strong>Tracking all Scrum teams activities</strong></h3><p>When the company decides to break down the structure into multiple small Scrum teams, it becomes almost impossible to participate in all their activities. There are QA Managers who try to involve themselves in all the meetings across all Scrum teams: grooming &amp; planning sessions, dailies, retrospectives, etc. From first glance, their calendar shows how busy they are, and it can be the evidence that their role is essential and irreplaceable. But in reality, there is no sense to follow up with all teams, because they are intended to be self-sufficient. Of course, the QA manager can be helpful in some cases in attempts to coordinate the multiple teams. However, it will likely lead to the result that teams will start <strong>losing their self-organization</strong> and giving part of the responsibility to a non-team member, which discredits the sense of Scrum teams.</p><p><strong>Summary:</strong> QA Manager should start trusting their QA colleagues and get insights from them on regular but not too frequent meetings (biweekly is the excellent frequency). The QA Manager should become a <strong>facilitator</strong> on these meetings to help all QA specialists across the organization track what’s happening in other teams and how it can influence their team.</p><h3><strong>Being in charge of product releases</strong></h3><p>The Scrum team takes the responsibility from the very beginning to the last day of feature support. It means that the team makes collective decisions on the following aspects:</p><ul><li>the readiness of a product to release (the level of product quality is high enough to go live)</li><li>the set of secondary release artifacts (user guides, documentation, automation, etc.)</li></ul><p>The concept is that the Scrum team is responsible for fixing production issues and the further support and maintenance of the released feature. In that knowledge, the team decides what additional release artifacts will help to support the feature in production (test documentation, automation coverage, etc.).</p><p>Undoubtedly, the good practice is to notify all other Scrum teams about the upcoming feature release. And of course, the most challenging is to make sure the product architecture provides the possibility to deliver features independently and safely without breaking the whole system with your changes.</p><p><strong>Summary:</strong> QA Manager should not take responsibility for a release and production bugs. Thus there is no need to get the approvals from QA Manager or any other “former structure” manager to release the feature<em>. </em>But what should be done — is providing Scrum teams with all necessary assistance to set up the <strong>reliable release processes</strong>. It sounds like an Architect role. Having that said, the QA Manager role can be transformed into the QA Architect role to provide the stable prod-like test environments, reliable regression test automation, and all other aspects that can reduce the possible adverse effects after the release.</p><h3><strong>Establishing “one size fits all” approach in Scrum teams</strong></h3><p>Each Scrum team should decide what practices and approaches suit their needs and goals. It’s expected that team members are highly qualified enough to be able to define strategies on how to perform their tasks. The attempts to unify all processes and apply general policies that dictate a “one size fits all” approach may result in a losing strategy.</p><p><strong>Summary</strong>: QA Manager should not ignore the needs and decisions of QA engineers in Scrum teams. Thus all suggestions on how to unify the existing ‘zoo of tools and processes’ should be done very thoroughly and carefully. The proposed solution should bring a profit to teams, not just an additional load. Usually, the universal approach that <strong>does not take into account the interests of all interested parties</strong> will not bring any positive effect, and may even destroy what already exists and brings positive results.</p><h3><strong>Conclusion</strong></h3><p>If your company moved to Scrum teams I see the following options regarding the role of QA Manager:</p><ol><li>Eliminate this role at all</li><li>Transform QA Manager role into QA Mentor / Facilitator, or if it’s possible — QA Architect (usually it depends on a technical background)</li></ol><p>If your company moved to Scrum teams, but the QA manager continues acting the same way it was in the past — I have some bad news: you’re killing your Scrum.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=485729170e00" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Performance testing with Postman]]></title>
            <link>https://anna-dolnyk.medium.com/performance-testing-with-postman-715fa0d717e3?source=rss-1b313debd831------2</link>
            <guid isPermaLink="false">https://medium.com/p/715fa0d717e3</guid>
            <category><![CDATA[performance-testing]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[postman]]></category>
            <category><![CDATA[qa]]></category>
            <category><![CDATA[testing]]></category>
            <dc:creator><![CDATA[Anna Dolnyk]]></dc:creator>
            <pubDate>Tue, 24 Mar 2020 22:21:02 GMT</pubDate>
            <atom:updated>2022-03-04T13:32:57.733Z</atom:updated>
            <content:encoded><![CDATA[<h3>Performance testing with Postman [SAVE UKRAINE. STOP RUSSIA]</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*49HD5D_vOyTSRwieS-sQwg.png" /></figure><p>A lot of QA engineers have Postman collections for testing API endpoints. Usually, these collections contain tests that check:</p><ul><li>response codes</li><li>response body structure</li><li>response body contents</li></ul><p>But sometimes we need to do performance tests, e.g. check that the response time is within some baseline values. But the response time for a <strong>single request </strong>is not representative due to various reasons:</p><ul><li>issues with a network</li><li>issues with a test environment</li><li>bad luck</li></ul><p>That’s why we used to acquire specific performance testing tools like JMeter. But what if we want to use a single tool for testing our API from a functional and performance perspective?</p><p>Let’s try to solve this problem by Postman.</p><h4>Inputs</h4><ul><li>Endpoint to test: <em>dummy.restapiexample.com/api/v1/employees</em></li><li>Number of requests: 100</li><li>The time of delay between requests: 100 ms</li><li>The baseline value of 90 percentile response time: 1000 ms</li><li>Goal: create a Postman test that checks the 90 percentile response time for a specified endpoint.</li></ul><h4>What is the 90 percentile response time?</h4><p>To explain this concept, I want to give an example: let’s say we have to check the response time for the request:</p><pre>GET dummy.restapiexample.com/api/v1/employees</pre><p>We will send this request 100 times with a 100-ms delay. We will collect the response time values for each request. Then we’ll sort all the response time values in ascending order. Afterward, we’ll take the first <strong>90%</strong> transactions out of this set. As a result, the response time that has the <strong>maximum value</strong> among them is considered as the 90 percentile response time.</p><h4>Let’s start</h4><p>Create a collection with a request you want to test.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2l0wovpXXsbNDpm3oQSRng.png" /></figure><p>Then open the <strong>Tests</strong> tab and write the following test script:</p><pre>//1000 ms is a maximum allowed value according to requirements <br>maximumResponseTime = 1000;</pre><pre>//100 is a number of sent requests according to requirements <br>iterations = 100;</pre><pre>//100 ms is a delay between requests according to requirements <br>delay = 100;</pre><pre>//responseTimes is an array for collecting response time values<br>responseTimes = [];</pre><pre>i=0;<br>function sendRequest() {<br>    pm.sendRequest({<br>        url: &quot;dummy.restapiexample.com/api/v1/employees&quot;,<br>        method: &#39;GET&#39;<br>    }, function (err, res) {<br>        pm.test(&quot;Response time is &quot; + res.responseTime, function (){<br>        pm.expect(err).to.equal(null);<br>        pm.expect(res).to.have.property(&#39;code&#39;, 200);<br>        responseTimes.push(res.responseTime);<br>        });<br>        if (i &lt; iterations - 1) {<br>            i++;<br>            setTimeout(sendRequest, delay);<br>        } <br>        else {<br>            percentile90ResponseTime = quantile(responseTimes, 90);<br>            pm.test(&quot;90 percentile response time &quot; + percentile90ResponseTime + &quot; is lower than &quot; + maximumResponseTime + &quot;, the number of iterations is &quot; + iterations, function () {<br>                pm.expect(percentile90ResponseTime).to.be.below(maximumResponseTime);<br>            });<br>        }<br>    });<br>}<br>sendRequest();</pre><pre>function sortNumber(a,b) {<br>    return a - b;<br>}</pre><pre>function quantile(array, percentile) {<br>    array.sort(sortNumber);<br>    index = percentile/100. * (array.length-1);<br>    if (Math.floor(index) == index) {<br>     result = array[index];<br>    } else {<br>        j = Math.floor(index)<br>        fraction = index - j;<br>        result = array[j] + (array[j+1] - array[j]) * fraction;<br>    }<br>    return result;<br>}</pre><p>In the 1st part of this script, we declare some baseline values: number of iterations, the maximum acceptable response time value and the time of delay between requests. Then we call functions that send our request for a specified number of <strong>iterations</strong> with a required <strong>delay</strong>. All the response time values are stored in <strong>responseTimes</strong> array.</p><p>The test that checks the 90 percentile response time calls a helper function called <strong>quantile(responseTimes, 90)</strong>. It’s declared at the end of the script. This function uses another helper function <strong>sortNumber </strong>that is required for sorting our array in ascending order. For more information use this <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort">reference</a>.</p><h4>Results</h4><p>When you hit <strong>Send</strong> the request, you can check the Console that will show the sequence of requests being sent.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OqkDVBzrVQa_95W5CJ3KHw.png" /></figure><p>The <strong>Test Results</strong> tab will show the response time records for all requests and the final test result: e.g. <strong><em>90 percentile response time 808.1 is lower than 1000, the number of iterations is 100.</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CF6dFZtJkoHGnPi70FO2fA.png" /></figure><p>That’s it. You can use this script in your Postman tests and check it out. Good luck :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=715fa0d717e3" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>