You work for a software outsourcing company. One day, a customer specializing in e-learning came to your company because they are having a major problem; many of their users complain that the performance of their system is poor, with frequent slowness when loading the course list page or viewing the lesson content. You are required you to undertake performance testing to analyze the source of system slowness in order to assist consumers in overcoming this problem.
The important requirement for performing performance testing is having an answer to the question, “What should I test?” To figure out what issues the system is experiencing, we should understand the system you want to evaluate. I would like to share with you some points:
1. Understand the business of the system
Understanding the business of the system is for defining effective test scenarios because it allows you to align your testing efforts with the requirements, and expectations of the system from a business perspective. In my perspective, here are a few reasons why understanding the business of the system is important when defining test scenarios:
- Requirement validation: By understanding the business context, you can ensure that the test scenarios you define cover all the relevant functional and non-functional requirements of the system. It helps you validate whether the system meets the intended business goals and performs as expected.
- Prioritization and risk assessment: Knowing the business priorities helps you prioritize your testing efforts. You can focus on testing the most critical and high-risk areas of the system, ensuring that they function correctly and without any major issues.
- Realistic test scenarios: Business knowledge allows you to create realistic test scenarios that closely mimic real-world usage patterns and scenarios. Understanding how users interact with the system and the specific business workflows helps you design test scenarios that simulate these interactions accurately, leading to more meaningful and relevant testing.
Overall, by understanding the business of the system, you can ensure that your test scenarios are comprehensive, relevant, and aligned with the goals and requirements of the system.
2. Understand the technical design of the system
Understanding the technical design of the system is for defining effective performance test scenarios because it allows you to assess and evaluate the system’s performance characteristics accurately. Here are a few reasons:
- System architecture: by understanding the technical design, you can identify the important parts, infrastructure, and dependencies that affect its performance.
- Scalability and capacity planning: you can evaluate how well it can handle growth and determine its capacity needs. Analyzing the design, infrastructure, and resource usage patterns allows you to create performance tests that simulate various user loads and confirm if the system can handle increased volumes.
- Performance optimizations: you can identify potential performance optimizations or areas where the system can be improved.
Overall, understanding the technical design of the system is essential for defining performance test scenarios that accurately evaluate the system’s performance characteristics. It helps you identify critical areas, set meaningful performance metrics, assess scalability, and uncover performance bottlenecks.
3. Analyze the existing data
To be able to simulate the most similar user behavior on the system, we need to answer the following questions:
- How many users access the system in a day?
- How many users access the system in an hour?
- Which pages are most visited by users?
- How long does a user spend on a page?
- How many transactions do users perform on a page?
The more system data you collect, the better you will be able to build test scenarios that mimic user behavior in the production environment. In addition to using the logs of the libraries that build the system, we can integrate the system with analytics and monitoring platforms. On the market today, there are many platforms that provide this feature. For example, Google Analytics (GA) is a widely used web analytics service offered by Google. It provides valuable insights and data about user behavior, and audience demographics. Based on data from GA, we can know which day has the most users accessing the system and the number of users using the system in an hour. Furthermore, GA gives us with the user’s duration on a page, from which we can compute the user’s think time.
Users by Day
Statistics of visits to pages
However, GA only provides us with data related to user behavior on the frontend. To be able to simulate the amount of requests that users send to the system, we need support from platforms like New Relic. Based on my experience, the most useful information to build test scenarios when analyzing the system’s backend are:
- Number of requests sent to the system.
- Number of insert, update and delete queries sent to the database.
- Number of times transactions were executed.
- Number of times tables were called in database.
Number of requests
Number of queries
Database operation data
In summary, the combination of understanding the business and technical aspects of the system, along with thorough data analysis, forms the foundation for effective performance testing. By following these points, you can identify performance bottlenecks, optimize the system’s performance, and ultimately provide users with a seamless and efficient experience.