文档章节

设计性能测试用例——对基于云的系统的一次测试经历

糖糖豆豆
 糖糖豆豆
发布于 2014/05/04 12:00
字数 3058
阅读 326
收藏 6
Muhammad Dhiauddin Mohamed Suffian正在马来西亚科技大学攻读(计算机科学的)软件测试博士,并在马来西亚领先的开放大学担任讲师。他是马来西亚一家上市IT公司的解决方案测试经理,且在此之前,他还曾是马来西亚一家领先研发机构测试部的高级工程师和测试团队队长。他在软件/系统开发和软件测试/质量保证领域有近7年的经验。有着在IT、汽车、银行和研发公司的工作经验,他从各种项目中获得了技术和管理技能。作为一名马来西亚科技大学高级软件工程中心(CASE )的实时软件工程理学硕士研究生,他拥有各种专业证书,分别有六西格玛绿带认证(Certified Six Sigma Green Belt),初级测试员( CTFL )认证和高级测试员认证–测试经理( CTAL -TM )。他还很了解CMMI,测试过程和方法及软件开发寿命周期( SDLC )。 他曾参与管理不同项目的不同测试策略、包括功能、性能、安全性、可用性和兼容性测试,系统测试和系统集成测试水平都有。他对软件工程和软件测试领域感兴趣,特别是性能测试测试管理
Fairul Rizal Fahrurazi是MIMOS Berhad公司一名产品质量与可靠性工程的测试工程经理,马来西亚的合作伙伴通过经济增长的专利技术在开拓新ICT市场创造上的一位领导者。 Fairul持有红帽认证系统管理员(RHCSA)证书,六西格玛绿带认证(Certified Six Sigma Green Belt)和流程经理资格认证。 Fairul监督MIMOS中所有项目的性能和测试自动化,还努力通过管理应用程序生命周期管理(ALM)工具来减少周期时间。Fairul热衷于通过设计和构建一个智能的软件工程系统以便能更好,更快地交付高质量产品。

?

  ?介绍
   任何特定软件即将发布并投入生产期间,其性能一直备受关注。尽管一软件已被用户证明如预期的正常运作(通过功能测试后),故障仍可能会发生,尤其当它无法承担用户生成的大量loads, volumes, transactions等时。评估软件的质量和适用性时,很少认真考虑这种非功能需求。因此,谨慎和周密的策划分析和性能测试用例设计是防止软件性能故障的关键。有了正确的性能场景,就可以系统地进行测试执行和软件性能评估,从而可以对性能改进做出详细的分析和建议。
   本文通过展示一个实际的案例研究(关于如何为一个基于云的系统规划和设计性能测试用例)解决了这个问题。性能测试结果对性能测试执行的分析,被证为测试用例设计的有效性的证据。

  关于被测的基于云的系统的概述
   开发被测系统的目的是:通过(最初是上网本上的)移动设备上的统一智能平台为大众提供各种在线服务。
   该系统主要包括几个子系统:安装在上网本上的客户端系统,智能服务门户,位置感知服务,内容整合服务,以及承载所有在线服务系统的云或虚拟平台。

?

图1.被测系统的逻辑结构

  客户端系统是使用Java语言开发,Java网络启动协议( JNLP )执行的。为了获取所需在线服务,客户端系统到智能服务门户网提出服务请求。存储所有服务的门户网还结合了内容整合服务和位置感知服务。所有这些使得合适的内容根据所请求的服务被推送到客户端系统的最终用户那儿。除此之外,门户网站还能够简介并结合适合服务的相关内容。另一方面,多个虚拟机上的云平台承载了所有子系统(智能服务门户网站,内容整合,以及位置感知),可以运行虚拟机实例并提供虚拟机负载的可扩展性。
   该系统的逻辑结构如图1所示。从部署的角度去看,图2展示了整个系统的操作环境。
   根据这两个图,很明显本系统的性能测试需要覆盖终端用户场景及服务器场景。 
   这是因为一个成功的服务器性能测试并不能保证在客户端运用该系统时,最终用户也会同样成功。

  性能测试
   这只是常用来衡量任何被测系统性能的一个概括。通常,我们设计并执行一次性能测试以弄清系统是如何响应特定load的,无论load有没有被定义为许多并发用户,volumes或 transactions。
   如下表1描述了性能测试各个领域的重点。

?

表1.性能测试重点

  上述重点保证了被测系统应对用户不断增长的loads时是可延展的,且一旦它被发布并投入生产就没有任何意想不到的问题,长远来看还有助于提高最终用户的满意度。这也将会使该系统比市场上的其它相似系统更具竞争优势。

  设计性能测试用例
   评估系统的测试用例的设计主要是受早前在规划和分析阶段设置的性能标准制约的。该系统需要足够快的响应速度,或者至少要达到规定的通过性能测试的最低性能标准。

图2.被测系统的物理架构

  如果系统可以表现得超出这些标准,即比最低标准值更快,该系统则被认为具有更好的性能及未来可以应对更多用户的可扩展性。另一个重要方面是确保性能测试用例的目的是建立真实世界模拟测试。现实世界测试用例将大幅度提高测试结果的可靠性。确定要模拟的测试用例时的重点是“最常见使用场景”和“业务关键使用场景”。测试用例一度不得不预测最常见的场景,因为系统还未上市且唯一知道的信息是:要求的程度。一旦系统上市,例如β测试中,就应有足够的关于用户如何使用系统的信息。该系统在Apache Web服务器上,因此可以访问日志,上面提供所有游客到过系统的记录。日志可以用“流量分析器”跟踪一直以来的用户的模式和习惯。因此测试用例可用于反映真实世界场景。系统拥有者或利益相关者为使该系统通过性能测试而设置的标准规范是:系统需要在1到100个并发用户的负载下5秒内做出响应。
   然而,该标准应当通过设计正确的、运行系统的、可能的场景而被进一步分解。最根本的是把性能测试一分为二:客户端性能和服务器端(云计算)性能。原因是,一个成功的测试服务器端并不等同于成功的客户端,反之亦然。
   利益相关者都同意,要测试的用户数目为1 ,100,200 ,300,400 ,500,1000 , 1500和3000个并发(虚拟)用户。这些数字与下面表2中给出的各场景相关:

表2.性能测试场景和相关虚拟用户

  设计性能测试用例时通常会被忽略的一方面是:将表2中的场景和一个网速测试或网络延迟连接以获得更逼真的测试用例,像对客户端系统所做的一样。这是为了模拟用户将如何体验不同互联网连接速度下系统的响应。选定的匹配性能测试的速度是标准LAN速度(这种情况下,1GbpsLAN速度),无线LAN速度,1 Mbps的有线宽带和0.44 Mbps的无线宽带。
   对于云平台,只用局域网速度进行性能测试。因此,这一基于云的系统的用以执行性能测试的完整测试用例如表3所示:

表3.性能测试用例

  案例研究 –把设计放入执行
   一个开源性能测试工具被用来执行所有性能测试的云系统测试用例,因为相对于其他性能测试工具,它允许越来越多的user loads且没有虚拟用户许可证限制。
然而,手动执行被用于客户端系统,因为客户端系统只能在上网本上运行,所以手动测试更实用。
   分布式性能测试方法被用于执行测试,以便工具可以有效地管理代理。 
   工具的环境设置如图3所示:

?

图3. 分布式性能测试执行的环境设置

  性能测试结果分为两组:云平台的测试结果和客户端的测试结果。
   表4详述了云平台的性能测试结果,而表5显示了客户端的性能测试结果。
   此外,为了更好地理解,图4以图表形式展示了云性能结果。

表4.云平台性能的响应时间结果

图4.云平台性能测试结果

表5.客户端性能的响应时间结果

  从给出的结果,可以进一步解释几个研究发现。
   研究发现如下:
   ?云平台或(客户端可从其获得在线服务的)服务器端系统能够在性能标准的5秒内响应1到100个虚拟用户而无任何中断。 
   ?虽然云平台仍然可以成功响应3000个虚拟用户,但响应时间延迟了,超出性能标准的5秒。 
   ?在客户端,最终用户可能会遇到:在通过客户端系统获取在线服务时,云平台的用户负载过大,响应时间延迟。 
   ?比起那些更慢的互联网获取,通过使用一个更快的互联网连接,最终用户可以更快地获取在线服务

  结论
   由于本文的重点是性能测试的测试用例设计,一个展示这些测试用例是如何被用于执行的案例研究为本文提供了论点。很显然,正确的规划对保证任何性能测试的成功都非常关键。性能测试不应该基于“想要时”或“要求时”。性能测试的测试场景和测试用例需尽可能早地被定义和设计,就和其他类型的测试一样,比如功能测试。这将决定能否顺利执行性能测试,其中包括:性能测试工具的选择,测试环境的设置,如何做出性能衡量和分析应该做的选择,性能结果不符合指定准则时扩大云平台的行动计划,以及执行测试的时间和资源。
   这些到位了,任何经过了严格性能测试的系统,一旦置于生产环境中,都能够应付日益增长的负载量,并且对服务其用户更稳定,更反应灵敏。

  版权声明:本文出自 SPASVO泽众软件测试网:http://www.spasvo.com/news/html/2014415143257.html

  原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

 

© 著作权归作者所有

糖糖豆豆
粉丝 6
博文 80
码字总数 116914
作品 0
普陀
私信 提问
简洁的python测试框架——Croner

[本文出自天外归云的博客园] Croner简介 这是一个非常简洁的测试框架,是基于python3的nose进行二次开发的。 Github地址 可以随意的在此基础上进行扩展以支持jenkins等其他扩展操作。 设计这...

天外归云
2017/09/26
0
0
统一软件开发过程——RUP

RUP(rational unified process)是一个面向对象且基于网络的程序开发方法论。它是以面向对象方法为基础的方法,RUP坚持以用例驱动,以架构为中心,迭代和增量的开发方法。 下面以思维导图为...

邵鸿鑫
2014/01/27
0
0
“并发用户数”、“系统用户数”和“同时在线用户数”的计算公式

与并发用户数相关的概念还包括“并发用户数”、“系统用户数”和“同时在线用户数”,下面用一个实际的例子来说明它们之间的差别。 假设有一个OA系统,该系统有2000个使用用户——这就是说,...

凯文加内特
2016/02/02
412
0
甩掉测试包袱,百度MTC助企业应对APP经济时代

虽说没有Bug的App应用根本不存在,但如果你的APP质量不达标,会直接影响到用户体验。所以,当APP应用与开发越来越多,APP测试是必选项。测试,其实是个苦力活,比拼的是人海战术,没有太多技...

百度MTC
2015/12/23
1
0
技术知识和稳定的系统之间,可能还差这些?

前言: 很多人都说——程序一门艺术,对于这个说法,以前我是很难理解的,程序就是一个工具,一门学问,怎么会是一门艺术呢,后来工作越深入,考虑的东西越多,发现程序的确是一门艺术。什么...

IT米粉
2017/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

世界最大双发客机 波音777X成功首飞

  据外媒报道,美国当地时间 1 月 25 日, 世界上最大的双引擎喷气客机波音 777X 完成首飞,全程 3 小时 51 分钟,从西雅图艾弗雷特佩恩机场起飞,降落在波音机场。   本次飞行将检验飞机...

水果黄瓜
16分钟前
21
0
SQLite Is Serverless 是无服务器的

按:虽然我觉得这篇文章有点蹭热度,但,所说的内容确实是在澄清一些东西。很多新的概念其实缺少背后的语境,新的造词都太随意了,以至于有混淆视听的嫌疑。 SQLite Is Serverless 是无服务器...

火眼金睛容嬷嬷
19分钟前
15
0
MBTI助你成功,让你更了解你自己

MBTI助你成功,让你更了解你自己 生活总是一个七日接着又一个七日,相信看过第七日的小伙伴,很熟悉这段开场白,人生是一个测试接着又一个测试,上学的时候测试,是为了证明你的智力,可谓从...

蛤蟆丸子
今天
55
0
Android实现App版本自动更新

现在很多的App中都会有一个检查版本的功能。例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求。一般的处理方式是:服务器返回的App版本与当前手机安...

shzwork
昨天
72
0
npm 发布webpack插件 webpack-html-cdn-plugin

初始化一个项目 npm init 切换到npm源 淘宝 npm config set registry https://registry.npm.taobao.org npm npm config set registry http://registry.npmjs.org 登录 npm login 登录状态......

阿豪boy
昨天
87
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部