└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # ⚡ Performance Engineering Questions 2 | 3 | ## ✨ Overview 4 | 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. 5 | 6 | No questions are stupid, only the answers are. This repository will list out the questions you can ask to your team. 7 | 8 | > *Even Einstein asked questions.* 9 | 10 | ## 🔍 Before you ask 11 | 12 | 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. 13 | 14 | ## ❗ Assumptions 15 | 16 | - 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. 17 | 18 | ## ❓ Questions 19 | 20 | ### 🕸 Application/Service 21 | 22 | - What is the objective of this exercise(performance testing)? 23 | - Infrastructure change 24 | - New app 25 | - User Interface change 26 | - Architecture change 27 | - Known performance issues 28 | - Can I get the access to the architecture diagram? 29 | - What is the core aspect of the application/service? 30 | - Tech stack of the application 31 | - Is the functional testing completed? 32 | - Is the application served over HTTPS? 33 | - Is it Single Page Application? 34 | - Is the application on cloud? 35 | - On-premise 36 | - Off-premise 37 | - Hybrid 38 | - Is the auto scaling turned on? 39 | - Is caching enabled? 40 | - Is cookies needs to be handled? 41 | - Is CDN available? 42 | - Is the application load balanced? 43 | - Is the firewall enabled? 44 | - Is proxy required to access the application? 45 | - Reverse Proxy Settings 46 | - Forward Proxy Settings 47 | - Is the application dockerized? 48 | - How authentication works? 49 | - What is the container orchestration tool? 50 | - Kubernetes 51 | - Docker Swarm 52 | - ... 53 | 54 | ### 🌐 Environment 55 | 56 | - Is it already available in production? 57 | - If it is in production, can I get access to the production logs? 58 | - Is stage or non-production environment available? 59 | - Is the test environment identical to the production? 60 | - If not, what is the scaled down factor? 61 | - Is APM solution available? 62 | - Is the performance testing environment up-to-date? 63 | - Is the application under test stable? 64 | - Do I get access to start/stop/restart the servers? 65 | - Is any service virtualized? 66 | - Is there any billing involved for any sort of services or environments? 67 | 68 | ### 👨‍👩‍👧‍👦 End Users 69 | 70 | - Who are all the end users? 71 | - End users' demographics 72 | - End users' device preferences 73 | - End users' network preferences 74 | - End users' browser preferences 75 | 76 | ### 🔢 SLAs, SLOs and all about numbers 77 | 78 | - What are all the SLAs and SLOs? 79 | - How many users/transactions need to be injected? 80 | - What is the throughput to achieve? 81 | - The context of throughput varies based on the tool you are working. 82 | - E.g. it could be number of successful orders per minute or the data (in bytes) transferred between the client and the server 83 | - Acceptable SLAs: 84 | - Response time 85 | - Throughput 86 | - CPU 87 | - Memory 88 | - Garbage Collection 89 | - Disk 90 | - Network 91 | - What is the network virtualization distribution? 92 | - In case of containers, what could be the acceptable performance metrics at pod/cluster level? 93 | - What is the acceptable % of failures? 94 | - Do we have any in-house or industry benchmarks to compare? 95 | - Do we have any baseline test stats? 96 | 97 | ### 💾 Test Data 98 | 99 | - Is the test data available? 100 | - Is the test data reusable? 101 | - Is there a dedicated team available to help me out to generate test data? 102 | 103 | ### ⚒️ Tools 104 | 105 | - Is the performance testing tool available? 106 | - Is the relevant licenses available? 107 | - Do we need to inform any other team before we begin the testing? 108 | 109 | ### 📜 Scripting 110 | 111 | - Critical scenarios to be tested 112 | - List of browsers to be tested 113 | - List of services and its method to be tested 114 | 115 | ### 📊 Testing 116 | 117 | - Types of performance testing in scope 118 | - Is the workload model design available? 119 | - Is IP spoofing required? 120 | - Ramp up, steady state, and ramp down duration 121 | - Duration of the test 122 | - Is baseline results available? 123 | - Is performance trend report required? 124 | - Is client-side metrics required? 125 | - Is background noise script required? 126 | 127 | ### 🔁 Process 128 | 129 | - Before we start the test, do we need to inform any other team? 130 | - Timeline for the project 131 | - To whom I can assign the defect? 132 | - What is the escalation process? 133 | - What are all the risks involved in this project and its mitigation plan? 134 | - List of contacts of developers, architects, and others 135 | 136 | ### 💹 Stats 137 | 138 | - To whom I should share the report? 139 | - Do I need to share it daily or weekly? 140 | - Following are the metrics which will be available in the report. 141 | * Minimum response time (ms) 142 | * Maximum response time (ms) 143 | * 90th percentile 144 | * Standard Deviation 145 | * Histogram 146 | * Hits per second 147 | * Number of transactions passed 148 | * Number of transactions failed 149 | * Throughput 150 | * Bytes Sent/Received 151 | * CPU utilization 152 | * Memory utilization 153 | * Garbage Collection 154 | 155 | ## After asking a question 156 | 157 | 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. 158 | 159 | Every company has some sort of knowledge management process, you can follow them too. 160 | 161 | ## 🙏 Contributions 162 | 163 | All kinds of contributions are welcome. Please submit a [PR](https://github.com/QAInsights/Performance-Engineering-Questions/pulls). 164 | --------------------------------------------------------------------------------