美文网首页
Testng 并发测试(thread-count + paral

Testng 并发测试(thread-count + paral

作者: J先生有点儿屁 | 来源:发表于2018-08-01 17:15 被阅读253次

    背景

    最近在接口用例写完后,在运行所有接口时遇到接口用例跑完花费时间较长的问题。最长会超过5分钟时间,为了解决时间过长问题。故此使用了Testng的并发执行的功能。

    直接开始

    Test测试用例代码
    public class Test1 {
        @Test
        public void testName() {
            System.out.println("test1 testname begin...");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("test1 testname over...");
        }
    }
    
    public class Test2 {
        @Test
        public void testName() {
            System.out.println("test2 testname begin...");
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("test2 testname over...");
        }
    }
    
    public class Test3 {
        @Test
        public void testName() {
            System.out.println("test3 testname begin...");
            try {
                Thread.sleep(15000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("test3 testname over...");
        }
    }
    

    Test1,Test2,Test3 代码相同,只是Thread.sleep的时间不同,分别是5s,10s,15s.

    xml配置集合
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    
    <suite name="test1" verbose="1" preserve-order="true" >
        <parameter name="report.config" value="src/main/resources/config/report/extent-config.xml"/>
        <parameter name="system.info" value="reporter.config.MySystemInfo"/>
        <test name="test1" preserve-order="true">
            <classes>
                <class name="com.onemt.test.Test1"/>
            </classes>
        </test>
        <test name="test2" preserve-order="true">
            <classes>
                <class name="com.onemt.test.Test2"/>
            </classes>
        </test>
        <test name="test3" preserve-order="true">
            <classes>
                <class name="com.onemt.test.Test3"/>
            </classes>
        </test>
        <listeners>
            <listener class-name="reporter.Listener.MyExtentTestNgFormatter"/>
        </listeners>
    </suite>
    

    上面的配置并没有开启并发测试,这三个测试用例执行时间为 5+10+15 = 30s。
    所以测试总时间为30s+。
    查看报告执行时间:


    未开启并发执行时间
    开启并发执行

    直接上xml配置

    <suite name="test1" verbose="1" preserve-order="true" thread-count="3" parallel="tests">
        <parameter name="report.config" value="src/main/resources/config/report/extent-config.xml"/>
        <parameter name="system.info" value="reporter.config.MySystemInfo"/>
        <test name="用户fb登录" preserve-order="true">
            <classes>
                <class name="com.onemt.test.Test1"/>
            </classes>
        </test>
        <test name="用户fb2登录" preserve-order="true">
            <classes>
                <class name="com.onemt.test.Test2"/>
            </classes>
        </test>
        <test name="用户fb3登录" preserve-order="true">
            <classes>
                <class name="com.onemt.test.Test3"/>
            </classes>
        </test>
        <listeners>
            <listener class-name="reporter.Listener.MyExtentTestNgFormatter"/>
        </listeners>
    </suite>
    

    <suite name="test1" verbose="1" preserve-order="true" thread-count="3" parallel="tests">开启了线程数量=3,并发模式为<tests>模式。
    查看报告执行时间:

    开启3个并发线程
    可以看到执行测试总时间为15s+115ms。可以知悉在并发模式下,根据最长的Test3测试时间 (sleep 15s)。

    详解

    thread-count 线程池数量

    必须与parallel配套使用,线程池的大小,决定并行线程数量。

    parallel
    • 该参数的值有:false,methods,tests,classes,instances。默认false
    • parallel必须和thread-count配套使用,否则相当于无效参数,thread-count决定了并行测试时开启的线程数量。
    • parallel="mehods" TestNG将并行执行所有的测试方法在不同的线程里
    • parallel="tests" TestNG将并行执行在同一个<test>下的所有方法在不同线程里
    • parallel="classes" TestNG将并行执行在相同<class>下的方法在不同线程里
    • parallel="instances" TestNG将并行执行相同实例下的所有方法在不同的线程里

    相关文章

      网友评论

          本文标题:Testng 并发测试(thread-count + paral

          本文链接:https://www.haomeiwen.com/subject/agervftx.html