Must ask Performance Engineering Questions
Tags: performance, testing, webperf, architecture
Published: 2020-10-07 15:26:28

<!-- wp:paragraph -->
<p>As a performance tester/engineer, we have to understand of almost everything about the project, application and what not. To acquire that knowledge we need to ask questions to the architects, developers, product owners etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>No questions are stupid, only the answers are. This repository will list out the questions you can ask to your team.</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><p><em>Even Einstein asked questions.</em></p></blockquote>
<!-- /wp:quote -->

<!-- wp:image {"align":"center","id":7668,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/10/Performance-Engineering-Questions-1024x585.jpg" alt="" class="wp-image-7668"/><figcaption>Performance Engineering Questions</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:heading -->
<h2>Before you ask</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Before you throw a lot of questions, I suggest you to do some ground work. Gather the details about the project, technical diagrams, internal documentations, also perform an internet search.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Assumptions</h2>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>In this context, application means it could be a web application or services or database etc. Based on the project, you can ask the relevant questions.</li></ul>
<!-- /wp:list -->

{% github QAInsights/Performance-Engineering-Questions%}

<!-- wp:heading -->
<h2>Performance Engineering Questions</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3>Application/Service</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>What is the objective of this exercise(performance testing)?</li><li>Known performance issues</li><li>Can I get the access to the architecture diagram?</li><li>What is the core aspect of the application/service?</li><li>Tech stack of the application</li><li>Is the functional testing completed?</li><li>Is the application served over HTTPS?</li><li>Is the application on cloud?</li><li>On-premise</li><li>Off-premise</li><li>Hybrid</li><li>Is the auto scaling turned on?</li><li>Is caching enabled?</li><li>Is the application load balanced?</li><li>Is the firewall enabled?</li><li>Is proxy required to access the application?</li><li>Reverse Proxy Settings</li><li>Forward Proxy Settings</li><li>Is the application dockerized?</li><li>What is the container orchestration tool?</li><li>Kubernetes</li><li>Docker Swarm</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Environment</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>Is it already available in production?<ul><li>If it is in production, can I get access to the production logs?</li></ul></li><li>Is stage or non-production environment available?</li><li>Is the test environment identical to the production?<ul><li>If not, what is the scaled down factor?</li></ul></li><li>Is APM solution available?</li><li>Is the performance testing environment up-to-date?</li><li>Is the application under test stable?</li><li>Do I get access to start/stop/restart the servers?</li><li>Is any service virtualized?</li><li>Is there any billing involved for any sort of services or environments?</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>End Users</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>Who are all the end users?</li><li>End users' demographics</li><li>End users' device preferences</li><li>End users' network preferences</li><li>End users' browser preferences</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>SLAs, SLOs and all about numbers</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>What are all the SLAs and SLOs?</li><li>How many users/transactions need to be injected?</li><li>What is the throughput to achieve?</li><li>The context of throughput varies based on the tool you are working.</li><li>E.g. it could be number of successful orders per minute or the data (in bytes) transferred between the client and the server</li><li>Acceptable SLAs:<ul><li>Response time</li><li>Throughput</li><li>CPU</li><li>Memory</li><li>Garbage Collection</li><li>Disk</li><li>Network</li></ul></li><li>What is the network virtualization distribution?</li><li>In case of containers, what could be the acceptable performance metrics at pod/cluster level?</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Test Data</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>Is the test data available?</li><li>Is the test data reusable?</li><li>Is there a dedicated team available to help me out to generate test data?</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Tools</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>Is the performance testing tool available?</li><li>Is the relevant licenses available?</li><li>Do we need to inform any other team before we begin the testing?</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Scripting</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>Critical scenarios to be tested</li><li>List of browsers to be tested</li><li>List of services and its method to be tested</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Testing</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>Types of performance testing in scope</li><li>Is the workload model design available?</li><li>Is IP spoofing required?</li><li>Ramp up, steady state, and ramp down duration</li><li>Duration of the test</li><li>Is baseline results available?</li><li>Is performance trend report required?</li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Process</h3>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>Before we start the test, do we need to inform any other team?</li><li>Timeline for the project</li><li>To whom I can assign the defect?</li><li>What is the escalation process?</li><li>What are all the risks involved in this project and its mitigation plan?</li><li>List of contacts of developers, architects, and others</li></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2>After asking a question</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Once you got the answers, make sure you record it. I use Microsoft OneNote to store all the project related knowledge. You could use a simple notepad with the timestamp or your favorite note-taking app. Make sure you are not violating company/client policy.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Every company has some sort of knowledge management process, you can follow them too.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Contributions</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>All kinds of contributions are welcome. Please submit a <a href="https://github.com/QAInsights/Performance-Engineering-Questions/pulls">PR</a>.</p>
<!-- /wp:paragraph -->