• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

一款开源的性能测试工具:认识p-unit[2]

发布: 2010-3-05 10:13 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 102次 | 进入软件测试论坛讨论

领测软件测试网

  一款开源的性能测试工具:认识p-unit[2]   软件测试 

    清单 5. 多线程运行测试案例结果

  [concurrent] Started running samples.SimpleTestClasssamples.SimpleTestClasstestAtestAtestAtestAtestAtestAtestAtestAtestAtestAtestA() - [405.0ms]testB() - [469.0ms]testC() - [503.0ms]total: 3, failures:0 (GREEN) - 1447.0ms

  是否和想象中的一样?默认情况 p-unit 启动 10 个线程来执行,要指定不同的线程数,只需将线程数做为参数传入 PUnitConcurrentRunner 即可。p-unit 甚至支持不同的测试案例有不同的线程数,这要求测试案例实现 p-unit 中定义的 Concurrent 接口,该接口的定义为:

  清单 6. p-unit Concurrent 接口

  public interface Concurrent { public int concurrentCount();}

  该接口的意思,相信无需再多做解释了,返回该测试案例需要的线程数。

  参数化测试案例

  性能测试,不同于单元测试,经常要求测试不同数量级在同一个测试场景中的表现,JUnit 是一款非常优秀的单元测试工具,但没覆盖到这个方面。比如我们比较类库 Foo1 的方法 bar() 和类库 Foo2 的方法 bar() 哪个更符合自己的应用程序,我们需要测试该函数在应用程序可能的数量级的范围内的表现。有经验的开发者知道经常碰到在小数量级 A 更好大数量级 B 更好的局面,因此全面的测试对于代码的性能理解非常重要,能帮助开发者做出正确的决定。p-unit 支持将参数传给测试方法,测试案例需要实现 p-unit 的 parameterizable 接口,该接口的主要方法是返回一组参数列表,这组列表的参数将会一一传给测试方法。

  清单 7. p-unit 参数化测试案例

  public class ParamTestClass implements Parameterizable { public static void main(String[] args) { new PUnitSoloRunner().run(ParamTestClass.class); } public Parameter[] parameters() { return new Parameter[] { new ParameterImpl(10), new ParameterImpl(20) }; } public void testA(ParameterImpl param) { SampleUtil.doSomething(); } public void testB(ParameterImpl param) { SampleUtil.doSomething(); } public void testC(ParameterImpl param) { SampleUtil.doSomething(); } public void setUpAfterWatchers(Parameter param) throws Exception { } public void setUpBeforeWatchers(Parameter param) throws Exception { } public void tearDownAfterWatchers(Parameter param) throws Exception { } public void tearDownBeforeWatchers(Parameter param) throws Exception { } static class ParameterImpl implements Parameter { private int _count; ParameterImpl(int count) { _count = count; } public int count() { return _count; } public String toString() { return String.valueOf(_count); } }}

  上述代码的执行结果为:

  清单 8. p-unit 参数化测试案例输出

  [solo] Started running samples.ParamTestClasssamples.ParamTestClasstestA(10) - [57936.0bytes,447.0ms]testA(20) - [33128.0bytes,61.0ms]testB(10) - [24832.0bytes,137.0ms]testB(20) - [0.0bytes,63.0ms]testC(10) - [83560.0bytes,468.0ms]testC(20) - [16528.0bytes,47.0ms]total: 6, failures:0 (GREEN) 1450.0ms

  从上述结果看出,每个方法被执行了 2 次,每次传入不同的参数。多线程运行参数化测试程序?相信读者已经明白怎么去实现了,只需将 PUnitSoloRunner 替换成 PUnitConcurrentRunner。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 工具 开源 认识 性能测试

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网