TestNG Selen - Lasttestbeispiel

Testng-Selen-Lasttest

In diesem Tutorial zeigen wir Ihnen, wie Sie die @Test-Attribute invocationCount und` threadPoolSize` verwenden, um einen Belastungstest oder einen Belastungstest auf einer Website durchzuführen.

Benutztes Werkzeug :

  1. TestNG 6.8.7

  2. Selen 2.39.0

  3. Maven 3

P.S Wir verwenden die Selenium-Bibliothek, um Browser für den Zugriff auf eine Website zu automatisieren.

1. Projektabhängigkeit

Holen Sie sich TestNG- und Selenium-Bibliotheken.

pom.xml

  <properties>
    <testng.version>6.8.7</testng.version>
    <selenium.version>2.39.0</selenium.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>${testng.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>${selenium.version}</version>
    </dependency>
   <dependencies>

2. @Test (invocationCount =?)

Diese "invocationCount" bestimmt, wie oft TestNG diese Testmethode ausführen soll.

Beispiel 2.1

  @Test(invocationCount = 10)
  public void repeatThis() {
   //...
  }

Ausgabe - Die Methode repeatThis () wird zehnmal ausgeführt.

PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis
PASSED: repeatThis

Example 2.2 - Verwendet Selenium, um einen Firefox-Browser zu öffnen und "Google.com" zu laden. Dieser Test soll sicherstellen, dass der Seitentitel immer "Google" ist.

package com.mkyong.testng.examples.loadtest;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;

public class TestMultipleThreads {

    @Test(invocationCount = 5)
    public void loadTestThisWebsite() {

        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com");
        System.out.println("Page Title is " + driver.getTitle());
        Assert.assertEquals("Google", driver.getTitle());
        driver.quit();

    }
}

Ausgabe - Sie werden feststellen, dass der Firefox-Browser fünfmal aufgefordert und geschlossen wird.

Page Title is Google
Page Title is Google
Page Title is Google
Page Title is Google
Page Title is Google
PASSED: loadTestThisWebsite
PASSED: loadTestThisWebsite
PASSED: loadTestThisWebsite
PASSED: loadTestThisWebsite
PASSED: loadTestThisWebsite

3. @Test (invocationCount =?, ThreadPoolSize =?)

Das threadPoolSize -Attribut weist TestNG an, einen Thread-Pool zu erstellen, um die Testmethode über mehrere Threads auszuführen. Mit Threadpool wird die Laufzeit der Testmethode erheblich verkürzt.

Example 3.1 - Starten Sie einen Thread-Pool, der 3 Threads enthält, und führen Sie die Testmethode dreimal aus.

  @Test(invocationCount = 3, threadPoolSize = 3)
  public void testThreadPools() {

    System.out.printf("Thread Id : %s%n", Thread.currentThread().getId());

  }

Ausgabe - Die Testmethode wird 3 Mal ausgeführt und jede hat einen eigenen Thread.

…​.[ThreadUtil]Starting executor timeOut:0ms workers:3 threadPoolSize:3 Thread Id : 10 Thread Id : 12 Thread Id : 11 PASSED: testThreadPools PASSED: testThreadPools PASSED: testThreadPools

__Example 3.2__ - Starten Sie einen Thread-Pool, der 3 Threads enthält, und führen Sie die Testmethode zehnmal aus.
@Test(invocationCount = 10, threadPoolSize = 3)
public void testThreadPools() {
System.out.printf("Thread Id : %s%n", Thread.currentThread().getId());
}
Ausgabe - Die Testmethode wird zehnmal ausgeführt und die Threads werden erneut verwendet.

....[ThreadUtil]Starting executor timeOut:0ms workers:10 threadPoolSize:3
Thread Id : 10
Thread Id : 11
Thread Id : 12
Thread Id : 10
Thread Id : 11
Thread Id : 12
Thread Id : 10
Thread Id : 11
Thread Id : 12
Thread Id : 10
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools
PASSED: testThreadPools

4. Testbeispiel laden

Durch die Kombination mehrerer TestNG-Threads und der leistungsstarken Browserautomatisierung von Selenium. Sie können einen einfachen, aber leistungsstarken Lasttest wie folgt erstellen:

TestMultipleThreads.java

package com.mkyong.testng.examples.loadtest;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;

public class TestMultipleThreads {

  @Test(invocationCount = 100, threadPoolSize = 5)
  public void loadTest() {

    System.out.printf("%n[START]Thread Id : %s is started!",
                                  Thread.currentThread().getId());

    WebDriver driver = new FirefoxDriver();
    driver.get("http://yourwebsite.com");

   //perform whatever actions, like login, submit form or navigation

    System.out.printf("%n[END]Thread Id : %s",
                                  Thread.currentThread().getId());

    driver.quit();

  }
}

Ausgabe - Der obige Test startet einen Thread-Pool von 5 und sendet 100 URL-Anforderungen an eine angegebene Website.

…​.[ThreadUtil]Starting executor timeOut:0ms workers:100 threadPoolSize:5 [START]Thread Id : 11 is started![START]Thread Id : 14 is started![START]Thread Id : 10 is started![START]Thread Id : 12 is started![START]Thread Id : 13 is started![END]Thread Id : 11[START]Thread Id : 11 is started![END]Thread Id : 10[START]Thread Id : 10 is started![END]Thread Id : 13[START]Thread Id : 13 is started![END]Thread Id : 14[START]Thread Id : 14 is started![END]Thread Id : 12[START]Thread Id : 12 is started![END]Thread Id : 13

....

** FAQs**  +
Q : For load testing with Selenium and TestNG, why only one browser is
prompts out at a time? +
A : Your test method is completed too fast, try putting a
`Thread.sleep(5000)` to delay the execution, now, you should notice
multiple browsers prompt out simultaneously. (For demonstration purpose
only).

=== Download Source Code

Download –
link://wp-content/uploads/2014/01/TestNG-LoadTest-Example.zip[TestNG-LoadTest-Example.zip](15 kb)

=== References

. http://docs.seleniumhq.org/[Selenium website]. http://en.wikipedia.org/wiki/Load__testing[Wikipedia : Load Testing]
link://tag/load-test/[load test]link://tag/selenium/[selenium]link://tag/testng/[testng]