Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Load testing concepts in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Perform load testing on a web application homepage
Preconditions (2)
Step 1: Open the load testing tool
Step 2: Create a test plan with 50 virtual users
Step 3: Set the test duration to 5 minutes
Step 4: Configure the test to send HTTP GET requests to http://example.com
Step 5: Start the load test
Step 6: Monitor the response times and error rates during the test
Step 7: Stop the test after 5 minutes
✅ Expected Result: The web application should handle 50 users simultaneously with average response time under 2 seconds and error rate below 1%
Automation Requirements - Apache JMeter
Assertions Needed:
Average response time is less than 2000 milliseconds
Error rate is less than 1%
Best Practices:
Use thread groups to simulate virtual users
Add listeners to collect response time and error data
Use assertions to validate performance criteria
Avoid hardcoding URLs; use variables for flexibility
Automated Solution
Testing Fundamentals
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.samplers.SampleSaveConfiguration;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
import org.apache.jorphan.collections.HashTree;
import java.io.FileOutputStream;

public class LoadTestExample {
    public static void main(String[] args) throws Exception {
        // Initialize JMeter Engine
        StandardJMeterEngine jmeter = new StandardJMeterEngine();

        // Create Test Plan
        TestPlan testPlan = new TestPlan("Load Test Plan");

        // Create HTTP Sampler
        HTTPSamplerProxy httpSampler = new HTTPSamplerProxy();
        httpSampler.setDomain("example.com");
        httpSampler.setPort(80);
        httpSampler.setPath("/");
        httpSampler.setMethod("GET");
        httpSampler.setName("Homepage Request");

        // Create Thread Group
        ThreadGroup threadGroup = new ThreadGroup();
        threadGroup.setName("Load Test Users");
        threadGroup.setNumThreads(50); // 50 virtual users
        threadGroup.setRampUp(10); // ramp up in 10 seconds
        threadGroup.setDuration(300); // 5 minutes

        // Build Test Plan tree
        HashTree testPlanTree = new HashTree();
        HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
        threadGroupHashTree.add(httpSampler);

        // Add Listener to collect results
        SampleSaveConfiguration saveConfig = new SampleSaveConfiguration();
        saveConfig.setTime(true);
        saveConfig.setLatency(true);
        saveConfig.setSuccess(true);
        saveConfig.setResponseCode(true);
        saveConfig.setResponseMessage(true);

        ResultCollector logger = new ResultCollector(saveConfig);
        logger.setFilename("load_test_results.jtl");
        testPlanTree.add(testPlanTree.getArray()[0], logger);

        // Configure JMeter
        jmeter.configure(testPlanTree);

        // Run Test
        jmeter.run();

        // After test, user can analyze load_test_results.jtl for response times and errors
    }
}

This code sets up a load test using Apache JMeter's Java API.

We create a test plan and add a thread group with 50 virtual users that ramp up over 10 seconds and run for 5 minutes.

The HTTP sampler sends GET requests to the homepage of example.com.

A result collector saves test results to a file for later analysis.

This setup follows best practices by using thread groups for users, configuring duration, and collecting detailed results.

Common Mistakes - 4 Pitfalls
Hardcoding URLs directly inside the test script
Not setting ramp-up time for virtual users
Ignoring error rate and only checking response times
Using too few virtual users for load testing
Bonus Challenge

Now add data-driven testing with 3 different URLs to test homepage, login page, and search page

Show Hint

Practice

(1/5)
1. What is the main purpose of load testing in software testing?
easy
A. To verify the correctness of business logic
B. To find security vulnerabilities in the system
C. To test the system's user interface design
D. To check how the system behaves under expected user loads

Solution

  1. Step 1: Understand load testing goal

    Load testing is done to see how a system performs when many users use it at the same time.
  2. Step 2: Compare options with load testing purpose

    Only To check how the system behaves under expected user loads matches this goal. Other options relate to security, UI, or logic testing, which are different types.
  3. Final Answer:

    To check how the system behaves under expected user loads -> Option D
  4. Quick Check:

    Load testing = check system under expected load [OK]
Hint: Load testing checks system performance under user load [OK]
Common Mistakes:
  • Confusing load testing with security testing
  • Thinking load testing checks UI design
  • Mixing load testing with functional correctness
2. Which of the following is the correct syntax to start a load test using a common tool script named load_test.sh in a terminal?
easy
A. run load_test.sh
B. start load_test.sh
C. bash load_test.sh
D. execute load_test.sh

Solution

  1. Step 1: Identify common shell command to run scripts

    In Unix-like systems, bash script.sh runs a shell script.
  2. Step 2: Check other options for correctness

    Commands like run, start, or execute are not standard shell commands to run scripts.
  3. Final Answer:

    bash load_test.sh -> Option C
  4. Quick Check:

    Run shell script = bash script.sh [OK]
Hint: Use 'bash script.sh' to run shell scripts in terminal [OK]
Common Mistakes:
  • Using non-existent commands like 'run' or 'start'
  • Forgetting to specify the shell to run the script
  • Confusing script execution with program installation
3. Consider this simplified load test script output summary:
Users simulated: 100
Average response time: 2.5 seconds
Error rate: 0%

What does this output tell us about the system's performance?
medium
A. The system handles 100 users with no errors but response time is moderate
B. The system has errors and slow response time
C. The system cannot handle 100 users
D. The system response time is very fast

Solution

  1. Step 1: Analyze the output values

    100 users were simulated, error rate is 0%, so no errors occurred. Average response time is 2.5 seconds.
  2. Step 2: Interpret performance meaning

    No errors means system handled load well. Response time of 2.5 seconds is moderate speed, not very fast.
  3. Final Answer:

    The system handles 100 users with no errors but response time is moderate -> Option A
  4. Quick Check:

    No errors + moderate response = system handles load [OK]
Hint: Zero errors + response time shows load handling quality [OK]
Common Mistakes:
  • Assuming 2.5 seconds is very fast
  • Ignoring error rate meaning
  • Confusing number of users with errors
4. A load test script is supposed to simulate 50 users but only 10 users are simulated. Which is the most likely cause?
medium
A. The load testing tool is configured to limit users to 10
B. The system under test crashed before test started
C. The script has a syntax error causing early termination
D. The network connection is too fast

Solution

  1. Step 1: Understand the problem context

    The script aims for 50 users but only 10 appear. This suggests a configuration or environment issue.
  2. Step 2: Evaluate options for cause

    A syntax error would likely stop the script entirely, not partially simulate users. System crash would stop all users. Network speed does not limit user count. Configuration limiting users to 10 fits best.
  3. Final Answer:

    The load testing tool is configured to limit users to 10 -> Option A
  4. Quick Check:

    User count limited by tool config = cause [OK]
Hint: Check tool user limit settings if fewer users simulated [OK]
Common Mistakes:
  • Blaming syntax errors without checking config
  • Assuming system crash without error logs
  • Confusing network speed with user count
5. You want to test a web app's performance under increasing load. Which approach best fits load testing to find the maximum user capacity before response time exceeds 3 seconds?
hard
A. Only test the app's UI responsiveness manually
B. Gradually increase simulated users while measuring response time until it exceeds 3 seconds
C. Test with 10 users repeatedly without increasing load
D. Run a single test with 1000 users and check errors only

Solution

  1. Step 1: Understand goal to find max capacity before response time limit

    This requires increasing load step-by-step and measuring response time.
  2. Step 2: Evaluate options for best method

    Gradually increase simulated users while measuring response time until it exceeds 3 seconds describes gradual increase and measurement, which fits load testing best. Other options either test fixed load, ignore response time, or test UI manually, which do not meet goal.
  3. Final Answer:

    Gradually increase simulated users while measuring response time until it exceeds 3 seconds -> Option B
  4. Quick Check:

    Increase load + measure response time = find max capacity [OK]
Hint: Increase users stepwise, watch response time limit [OK]
Common Mistakes:
  • Testing only fixed large user count
  • Ignoring response time in load tests
  • Relying on manual UI checks for load testing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard