精华内容
下载资源
问答
  • 测试终端、服务器多线程任务处理方式及压力情况。
  • 1、多线程执行测试用例 环境:Win10 x64, python 37, selenium 2.5, Firefox 46等 from threading import Thread from selenium import webdriver from time import ctime, sleep def test_baidu(browser, ...

    1、多线程执行测试用例

    环境:Win10 x64, python 37, selenium 2.5, Firefox 46等

    from threading import Thread
    from selenium import webdriver
    from time import ctime, sleep
    
    def test_baidu(browser, search):
        """测试用例"""
        print('start:%s' % ctime())
        print('browser:%s' % browser)
    
        if browser == 'chrome':
            driver = webdriver.Chrome()
        elif browser == 'ie':
            driver = webdriver.Edge()
        elif browser == 'firefox':
            driver = webdriver.Firefox()
        else:
            print('browser参数有误')
    
        driver.get('http://www.baidu.com')
        driver.find_element_by_id('kw').send_keys(search)
        driver.find_element_by_id('su').click()
        sleep(2)
        driver.quit()
    
    if __name__ == '__main__':
        lists = {'chrome': 'threading', 'firefox': 'python', 'ie': 'java'}
    
        threads = []
        files = range(len(lists))
    
        # 创建线程
        for browser, serach in lists.items():
            t = Thread(target=test_baidu, args=(browser, serach))
            threads.append(t)
    
        # 启动线程
        for t in files:
            threads[t].start()
    
        for t in files:
            threads[t].join()
    
        print('end:%s' % ctime())
    

    2、多线程分布式执行测试用例

    环境:Win10 x64, python 37, selenium 2.5, selenium grid 2.5, VM虚拟机, Firefox 46等。

    分布式顾名思义就是在多个环境或多个系统上运行,这样做得好处有很多,如:节省时间,可测兼容等等

    这里需要说明的是,加了selenium grid,下载地址:,需要下与selenium相同版本的。下载后放在本机和虚拟机上。

    注意:虚拟机上要有selenium可运行的环境,即与本机一样的环境。这边自己配就不讲解。

    1)、脚本如下:

    from threading import Thread
    from selenium import webdriver
    from time import sleep, ctime
    
    def test_baidu(host, browser):
        """测试用例"""
        print('start:%s' % ctime())
        print(host, browser)
        dc = {'browserName': browser}
        driver = webdriver.Remote(command_executor=host, desired_capabilities=dc)
        driver.get('http://www.baidu.com')
        driver.find_element_by_id('kw').send_keys(browser)
        driver.find_element_by_id('su').click()
        sleep(2)
        driver.close()
    
    if __name__ == '__main__':
        lists = {'http://127.0.0.1:4444/wd/hub': 'chrome',
                 'http://127.0.0.1:5555/wd/hub':  'MicrosoftEdge',
                 'http://192.168.75.132:6666/wd/hub': 'firefox'
                 }
        threads = []
        files = range(len(lists))
    
        # 创建线程
        for host, browser in lists.items():
            t = Thread(target=test_baidu, args=(host, browser))
            threads.append(t)
    
        # 启动线程
        for i in files:
            threads[i].start()
        for i in files:
            threads[i].join()
        print('end:%s' % ctime())

    2)、在本地主机启动一个hub 和 一个node ,打开两个终端分别输入:

    java -jar selenium-server-standalone-2.52.0.jar -role hub

     默认端口:4444

    java -jar selenium-server-standalone-2.52.0.jar -role node -port 5555

    备注:需要在selenium-server-standalone-2.52.0.jar的路径下执行!如需要多个节点增加端口即可

    3)、在虚拟机的终端执行

    java -jar selenium-server-standalone-2.52.0.jar -role node -port 6666 -hub http://192.168.75.1:4444/grid/register

    4)、回到本机运行上面的脚本。

    展开全文
  • 使用junit进行多线程并发测试

    万次阅读 2017-08-24 15:06:38
    这篇讲一下如何使用junit进行多线程并发测试 ~ 实际上junit是不支持多线程的,你可以试试,在test方法里面new个 Thread ~ 会报错 ~ 那你会问我在这还扯什么犊子 ~ 我当然不是在这扯犊子了~~ 有插件 ~~ 对,有...

    没使用过junit的,请看上篇博客。
    这篇讲一下如何使用junit进行多线程并发测试 ~
    实际上junit是不支持多线程的,你可以试试,在test方法里面new个 Thread ~ 会报错 ~
    那你会问我在这还扯什么犊子 ~
    我当然不是在这扯犊子了
    ~~
    有插件 ~~ 对,有插件!

    <!-- 包依赖 -->
     <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${junit.verion}</version>
         <scope>test</scope>
         <optional>true</optional>
     </dependency>
     <!-- junit 多线程测试 -->
     <dependency>
         <groupId>fakepath</groupId>
         <artifactId>groboutils-core</artifactId>
         <version>5</version>
         <scope>test</scope>
     </dependency>

    在junit基础上多引入一个包,这个包可以下载不下来,别着急,待会我上传一个 ~ 放到本地仓库就好了 ~ 下载链接
    使用方法也是非常之简单:

     @Test
        public void MultiRequestsTest() {
            // 构造一个Runner
            TestRunnable runner = new TestRunnable() {
                @Override
                public void runTest() throws Throwable {
    
                    //你的测试内容
                }
            };
            int runnerCount = 30;
            //Rnner数组,想当于并发多少个。
            TestRunnable[] trs = new TestRunnable[runnerCount];
            for (int i = 0; i < runnerCount; i++) {
                trs[i] = runner;
            }
            // 用于执行多线程测试用例的Runner,将前面定义的单个Runner组成的数组传入
            MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs);
            try {
                // 开发并发执行数组里定义的内容
                mttr.runTestRunnables();
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }

    好了,大功告成!

    展开全文
  • junit单元测试不支持多线程测试

    万次阅读 2017-05-12 11:10:13
    今天看《高并发》书,写了一个多...经过研究后发现单元测试@Test并不支持多线程测试;以下为分析过程: private static ExecutorService ex = Executors.newFixedThreadPool(5); public static class myTask implem
    今天看《高并发》书,写了一个多线程的类,发现测试方法输出的结果并不对;
    同样的代码,经过main方法后输出的结果却是正常的;经过研究后发现单元测试@Test并不支持多线程测试;以下为分析过程:
    
    private static ExecutorService ex = Executors.newFixedThreadPool(5);
    	
    	public static class myTask implements Runnable{
    		@Override
    		public void run() {
    			long s0 = System.currentTimeMillis();
    			System.out.println(s0 + ":" + Thread.currentThread().getId());
    			try {
    				Thread.sleep(1000);
    			} catch (InterruptedException e) {
    				Logger.getLogger(getClass()).debug("线程异常");
    			}
    		}
    	}
    	
    	/**
    	 * @discription 这个测试类只能输出5条线程数据,原因为在@Test的junit_jar包中TestRunner方法有个特性:当测试类的主线程完成后回直接关闭jvm(System.exit),不会等待子线程运行完;所以主线程会在第一批线程处理完成后直接退出
    	 * @author liu_l       
    	 * @created 2017年5月12日 上午10:21:26     
    	 * @throws InterruptedException
    	 */
    	@Test
    	public void test() throws InterruptedException{
    		myTask task = new myTask();
    		for(int i=0; i<10; i++){
    			ex.execute(task);
    		}
    	}
    

    输出结果为:

    time:1494558540525____ThreadId:10
    time:1494558540525____ThreadId:11
    time:1494558540525____ThreadId:12
    time:1494558540526____ThreadId:13
    time:1494558540526____ThreadId:14
    
    这个输出明显是有问题的,讲道理在线程池这5条线程运行完过一秒会有相同的5条线程继续执行剩下来的5条线程;正常输出结果:
    
    time:1494558751747____ThreadId:9
    time:1494558751747____ThreadId:11
    time:1494558751747____ThreadId:10
    time:1494558751747____ThreadId:12
    time:1494558751747____ThreadId:13
    time:1494558752747____ThreadId:10
    time:1494558752747____ThreadId:11
    time:1494558752747____ThreadId:9
    time:1494558752747____ThreadId:13
    time:1494558752747____ThreadId:12
    
    那么问题来了,why?这时候我想起来看下Junit4 TestRunner源码:
    
    	public static final int SUCCESS_EXIT = 0;
    	public static final int FAILURE_EXIT = 1;
    	public static final int EXCEPTION_EXIT = 2;
    	
    	public static void main(String args[]) {
    		TestRunner aTestRunner= new TestRunner();
    		try {
    			TestResult r= aTestRunner.start(args);
    			if (!r.wasSuccessful()) 
    				System.exit(FAILURE_EXIT);
    			System.exit(SUCCESS_EXIT);
    		} catch(Exception e) {
    			System.err.println(e.getMessage());
    			System.exit(EXCEPTION_EXIT);
    		}
    	}
    
    再看看TestResult类:
    
    	/**
    	 * Returns whether the entire test was successful or not.
    	 */
    	public synchronized boolean wasSuccessful() {
    		return failureCount() == 0 && errorCount() == 0;
    	}
    
    在这里我们明显可以看到:当aTestRunner调用start方法后不会去等待子线程执行完毕在关闭主线程,而是直接调用TestResult.wasSuccessful()方法,而这个方法始终返回的是false,所以主线程接下来就会执行System.exit,这个放回会结束当前运行的jvm虚拟机,所以使用junit测试多线程方法的结果异常就正常了;
    (ps:想要正常输出的话可以让主线程不要结束,等待子线程全部运行结束后在结束主线程,输出结果就会正常,下面会junit测试多线程正常输出的方法:`@Test
    public void test1() throws InterruptedException{
    	myTask task = new myTask();
    	for(int i=0; i<10; i++){
    		ex.execute(task);
    	}
    	Thread.sleep(100000);
    }`)
    
    展开全文
  • JAVA多线程测试工具

    2017-12-25 13:41:38
    线程测试工具,压力测试网页,调用地址神器。可以轻松的得到系统的瓶颈,并发数。
  • Junit不支持多线程测试

    千次阅读 2017-03-21 15:51:38
    Junit不支持多线程测试Junit不支持多线程测试Junit不支持多线程测试重要的事情说三遍!!!严格的来说,JUnit4本身是支持多线程测试的,但没有提供多线程测试的注解

    Junit不支持多线程测试

    Junit不支持多线程测试

    Junit不支持多线程测试

    重要的事情说三遍!!!

    严格的来说,JUnit4本身是支持多线程测试,但没有提供多线程测试的注解,所以

    @Test
        public void testPrintOddEven(){
            PrintOddEven thereThread = new PrintOddEven();
            Thread thread = new Thread(thereThread);
            thread.setName("张三");
            thread.start();
            Thread threa = new Thread(thereThread);
            threa.setName("李四");
            threa.start();
        }

    这样测试多线程简直是图样图森破!!!

    还是老老实实用main方法测试吧!!!

    为什么呢,等你来告诉我

    如果你能看懂这个——【JUnit4多线程执行测试用例】请也给我讲讲

    展开全文
  • Java多线程下载文件

    万次阅读 热门讨论 2017-08-03 10:03:08
    Java多线程下载文件优化:合理利用服务器资源,将资源利用最大化,加快下载速度一般有两种方式: 线程池里面有N个线程,多线程下载单个文件,将网络路径的文件流切割成多快,每个线程下载一小部分,然后写入到文件...
  • 前言:看到有的文章说Junit不支持多线程,测试了一下 (demo整合mybatis来查询)多线程测试A:查询用户信息@Test public void testThreadJunit2() throws Throwable { for (int i = 0; i &lt; 3; i++) { ...
  • jmeter关于模拟多线程压力测试

    千次阅读 2017-06-15 18:22:17
    简单记录一下在windows 7上使用jmeter 进行多线程压力测试,如有错换,欢迎指教
  • Python多进程多线程测试

    万次阅读 2019-09-17 17:18:35
    今天在工作中遇到爬虫效率问题,在此处记录多进程、多线程测试脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'Seven' from concurrent.futures import ThreadPoolExecutor, ...
  • Junit如何进行多线程测试

    千次阅读 2017-07-17 10:26:08
    Junit和许多开源软件项目集成在一起,但是Junit执行多线程的单元测试有一些问题。这篇文章介绍Junit的一个扩展类库―――GroboUtils,这个类库被设计为来解决这些问题,并且使在Junit中进行单元测试成为可能。对...
  • JUnit4多线程执行测试用例

    万次阅读 2015-05-07 09:36:09
    在testerhome社区中,有人评论说直接使用TestNG,就可以实现多线程,是的,但是方式不一样;我们是按照自己的需求对JUnit4自定义多线程Runner,直接在某个类加上相应的注解即可,运行该类就行,支持类和方法级别;...
  • 并发多线程测试工具

    千次阅读 2017-07-19 17:32:48
    下载了一个 ab ,安装很简单也很好用,看到测试结果,有点小小的兴奋 保存一下,方便下次使用吧 F:\ApacheBench(ab)压力测试工具(Windows)>ab -n 3000 -c 1000 http://localhost:700
  • GroboUtils之多线程测试

    千次阅读 2008-09-28 09:07:00
    单元的颗粒度可以小到是一个函数,也是大到是一个类,甚至更大,但是,在单元测试时,由于junit的设计,它对于runnable的对象是忽略的,所以,在我们的测试过程中,对于多线程测试就变得困难和不可行。但是,在...
  • Junit4 GroboUtils多线程测试

    千次阅读 2012-06-07 10:43:25
    利用JUNIT4,GroboUtils进行多线程测试 多线程编程和测试一直是比较难搞的事情,特别是多线程测试。只用充分的测试,才可以发现多线程编码的潜在BUG。下面就介绍一下我自己在测试多线程并发程序时用的一个比较简单...
  • TestNg多线程测试----平行化测试

    万次阅读 2014-10-23 13:54:29
    我们在开发过程中经常会遇到多线程的编程,比如最常见的几种情况...这里我们不去详细讨论每种方式的开发方法,但是我们会首先想到一个问题,如何进行多线程代码的测试? TestNg给出了关于多线程平行化的测试解决方案:
  • 问题现象 .../** * @Title: junit多线程测试 * @ClassName: JunitMultiThreadTest.java * @Description: * * @Copyright 2016-2018 - Powered By 研发中心 * @author: * @date: 2018-01-30 19:31 * @ver
  • 多线程】——JAVA多线程文件下载

    千次阅读 2019-07-05 16:52:41
    在项目开发过程中,需要对服务器上的某些文件进行下载,最好还是多线程的,网查查阅一下资料,整理两个可以用的案例,特此记录。两个案例分别采用文件流的方式和RandomAccessFile实现。 一、文件流操作 Download...
  • 即JMeter如何实现多线程组并发测试,也就是Loadrunner中的混合场景测试时,该如何设置并发数?测试需求如下:对业务A、业务B、业务C、业务D、业务E,5个业务按并发比例要求进行100个用户并发的压力测试;JMeter是...
  • Java多线程做压力测试

    千次阅读 2018-06-05 11:27:47
    写一个多线程做压力测试的例子 public interface RequestHandler&lt;T&gt; { public void handle(T result); }   package com.arch; import java.util.ArrayList; import java.util.List; import ...
  • python多线程执行测试用例

    千次阅读 2018-08-15 11:35:41
    以百度搜索为例,通过不同的浏览器启动不同的线程 &quot;&quot;&quot; from threading import Thread from selenium import webdriver from time import sleep,ctime #测试用例 def test_baidu(browser...
  • CountDownLatch讲解-Junit实现多线程测试

    万次阅读 2018-12-19 16:10:17
    我们知道使用junit进行多线程测试时,主线程执行完毕后直接结束所有线程,(这就好比我前文说线程五种状态中的“STOP”,就是不接受新任务,中断当前正在运行的任务。)导致很多子线程没有执行完呢就已经关闭了,...
  • 某个函数worker是在多线程环境下运行的,如果要对其进行“单元测试”,是不是也要在相应的多线程环境下测试?还是在单线程环境下测试
  • JavaSE多线程下载的实现

    千次阅读 2016-05-07 00:25:17
    本文中主要提供的是java多线程下载文件方案,以及java多线程将临时进度保存到文件,多线程断点续传的实现; 1、多线程下载 2、将下载进度保存到临时文件,多线程的断定续传
  • ffmpeg x264多线程编码测试

    千次阅读 2017-12-21 17:31:34
    测试环境 组内测试机,4核,1.8GHZ,内存2G 测试过程 默认线程设置,ffmpeg的AVCodecContext中thread_count为1 ...测试结果:cpu占用250%,4个cpu平均使用率20%,转码时间4分28秒 结果总结 x26
  • 在本地使用GroboUtils进行多线程测试

    千次阅读 2016-09-23 17:52:29
    在本地开发的时候有时候需要用到多线程测试某些类或者方法是否有线程安全问题,由于本地开发机器硬件限制通过硬编码的方式往往难以达到多个线程同时访问的效果,这时可以考虑使用GroboUtils达到目的。顺便提一句,...
  • Java Unit 多线程 测试

    千次阅读 2012-09-26 17:07:03
    1 内存泄露测试 参考《高质量java程序设计》P112 jdk自带内存泄露工具测试方法 hprof Java内存泄露测试及工具 http://blog.csdn.net/bruce_sky/article/details/8004318 ...使用J
  • Java多线程测试

    千次阅读 2019-07-31 15:42:10
    (3)刚才说的是线程只消耗CPU,在实际应用中这种情况是不存在的,程序总会跟资源打交道,比如读个文件,查询数据库,访问网络,这个时候多线程才能体现出优势。在一个进程中,让A先用一下CPU去查询数据库,在A查询...
  • Jmeter如何实现多线程组并发测试

    千次阅读 2020-01-03 15:06:00
    即Jmeter如何实现多线程组并发测试?也就是Loadrunner中的混合场景测试时,该如何设置并发数? 可使用吞吐量控制器来实现,先添加需要测试的各个请求。 比如这里的三个接口请求“商铺位置”、“库存”、“押金”...
  • Java多线程 做后台高并发测试 方法

    万次阅读 2019-03-25 09:43:25
    java多线程、做api接口压力测试

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 622,410
精华内容 248,964
关键字:

多线程下载测试