一种改进的轻量级.NET应用程序性能测试框架.docVIP

一种改进的轻量级.NET应用程序性能测试框架.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种改进的轻量级.NET应用程序性能测试框架.doc

  一种改进的轻量级.NET应用程序性能测试框架教育资源库 摘要:本文从实际应用出发,提出一种轻量级.应用程序性能测试框架设计方案。该方案是对已有结果的进一步扩充,具有更强的实用性和扩展性。 1 引言 文[1]提出一种.应用程序“性能测试框架”,其基本思路是通过多个线程执行通过委托传递过来的待测试的程序块,各线程所运行的程序块的主逻辑是相同的,不同的是执行条件(如初始参数、执行次数等)。这样就可以得到不同“环境”下算法的执行时间,进而得到整体的时间消耗分布情况。应该说,这种方法的思路是很清晰的,使用也很方便。文[1]还比较详细地分析了为何采用委托而放弃“反射”、“接口”等手段,主要是为了获取更为准确的测试结果。 但从实际应用来看这种测试还是显得不够全面,它只是通过编写类似测试脚本的测试程序来对某段核心程序或算法进行测试。如果一个应用程序的核心算法很复杂,中间步骤也很复杂,则相应的测试程序编写就变得比较烦琐。比如B/S程序就存在大量的交互过程,这时如果想获取一个重要业务操作的执行时间,上述测试框架实现起来就比较麻烦,甚至有些就不能实现。另外,在表述上我们认为文[1]所提性能测试方法应当称为轻量级性能测试,因为真正的性能测试包括的参考指标是很多的,不仅仅是执行时间。 针对这些问题,本文对文[1]进行了扩展,给出一种更为合理的轻量级.应用程序性能测试框架(Light-ance Testing Frameal2 概念与结构设计 首先,我们引入“正向测试”和“反向测试”两个概念。 所谓正向测试是指顺序运行应用程序或功能模块,通过嵌入测试点,最终得到各个阶段的运行时间、CPU利用率、内存使用等性能指标的结果。反向测试则是通过编写测试程序对某个功能点或某段应用逻辑进行深度测试,进而得出一组性能指标得测试结果。这里的深度测试是指给定不同的测试条件,如执行次数、初始参数等。 不难看出,正向测试和反向测试是相互补充的,文[1]中的测试框架即是我们这里所说的反向测试。 下面来看一下结构设计: 图2-1 整体结构图 解释:LPTF整体上包括测试逻辑、结果输出两部分。测试逻辑由正向测试(StraightTest)和反向测试(ReverseTest)组成。在StraightTest中我们看到有一个叫作GlobalStraightTest的类,这是因为B/S程序在进行StraightTest时可能会有多个页面间跳转的情况,这时如果我们要做全局的正向测试就要保存一个StraightTest的执行器(TestRunner)的状态。 测试结果输出模块(ResultOutput)会根据传递过来的测试结果和指定的输出模式进行结果输出,它和测试逻辑是相对独立的。输出模式有两种DisplayOption、soNormal style=TEXT-ALIGN: center align=center 图2-2 正向测试结构图 解释:正向测试的实现并不复杂,在对B/S程序进行全局测试时要传入一个System.soNormal style=TEXT-INDENT: 21ptStraightTest的具体执行顺序大致是“生成TestRunner对象→调用TestRunner的RunTests方法启动测试→调用TestRunner的PhaseEnd方法结束一个阶段的测试→…→调用TestRunner的End方法结束测试”。每一次PhaseEnd和最后的End方法都会记录当前的测试结果,测试结束后可调用GetTestResult方法获取全部测试结果。测试结果记录每个阶段的名称和相应的执行时间。 图2-3 反向测试结构图 解释:反向测试比正向测试要复杂一些,主要是针对同一段程序要准备不同的执行程序(这里称之为测试用例TestCase,一般分“长时间-Max”、“中等时间-Median”、“短时间-Min”三个测试环境)。如果每个测试用例要进行一些初始、扫尾和验证动作,则还要把相应的方法委托给PreTestCleanup、PostTestCleanup和TestValidityCheck。测试执行器会根据整体测试情况计算出一个一般运算时间值(这里称之为规范值NormalisedTimeSpan)。 反向测试的执行过程是首先开辟一个单独的线程,根据指定的执行次数和迭代次数执行用例。执行用例的顺序是随机的。最后,筛选并统计每个用例的执行时间。 另外,反向测试中的测试进度(Progress)直接写在了LPTF中,这是因为反向测试的测试程序都是C/S程序,不存在URL的问题,可以直接写成dll。 图2-4 测试结果输出引擎结构 解释: LPTF提供了丰富的输出格式。通过一个抽象类output规范了统一接口,各种输出方式继承output并实现Outp

您可能关注的文档

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档