客户端稳定性测试

基于以上面临的问题,一种“开后门”的方法引起了我们的注意,“后门”是指RD在程序中专门为了某些目的开设的访问通道,通过这些隐秘不为人知的数据访问通道,可以实现特殊的产品功能。对于自动化来说,我们可以通过这种方式将程序的一些界面信息暴露,当然也不局限于UI的信息,我们也可以将任意测试程序需要的信息通过后门的方式暴露给我们自己的测试程序即可以实现自动化相关的需求。

  这个想法在后期的实践中逐步优化,最终形成了一套基于Proxy架构的自动化解决方案。当被测程序启动时,加载Proxy,并将皮肤引擎的指针(全局变量)传入Proxy中,自动化脚本通过与Proxy通信,实时获取UI的各种信息该框架包含两大部分:

  1、一部分是以Pywinauto(Pywinauto是一些用于自动化测试Windows标准图形界面的模块的集合。它可以允许你很容易的发送鼠标、键盘动作给Windows的对话框和控件)为操作基础,pyunittest为case组织框架的python脚本部分,这部分包含了关键字的封装,case的实现。

  2、另一部分是植入到被测程序内部的Proxy,当被测程序启动时,加载Proxy,并将皮肤引擎的指针(单例)传入Proxy中,自动化脚本通过与Proxy通信,实时获取UI的各种信息,从而达到自动化的操作以及验证的目的。

  整个自动化框架图如下:

  执行

  稳定性测试不同于功能测试的自动化,它属于一种概率性的测试,需要长期运行过后才能得出最后的测试结论,即使稳定性测试通过,也不能保证系统实际运行的时候不出问题。所以要尽可能的提高测试的可靠性,我们可以通过多次测试,延长测试时间,增大测试压力来提高测试的可靠性。

  当稳定性场景存在多组时,为了保证运行的及时性与可靠性,同时也为了满足测试环境的丰富性,稳定性测试的执行需要多台机器才行。如果条件允许,可以使用不同环境及配置的物理机进行测试,也可以使用虚拟机,构建丰富的环境中心来满足稳定性测试的需求。

  当存在多个运行环境和多组case时,为了保证测试场景组合的多样性,各组case要阶段性的循环在每个运行环境中执行,因此需要一个清晰明确的执行计划和记录:

客户端稳定性测试

  稳定性测试是在保证功能完整正确的前提下,必不可少的一项测试内容,通过对软件稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。

  无论是服务器端还是客户端,对稳定性的测试无非是就是测试系统的长期稳定运行能力。在系统运行过程中,对系统施压,观察系统的各种性能指标,以及服务器的指标。不同于服务器端的稳定性测试的是,客户端软件是运行在单机环境下,所以不存在并发用户数的概念,取而代之的是一些多进程长时间的操作,以及各种复杂的并发场景的组合。一款客户端软件,它的稳定性测试需求基本包括:

  1、长时间运行及各种操作下,软件的稳定性以及各种性能指标的劣化趋势。

  2、多进程或多线程运行时的稳定性。

  3、不同操作系统,在不同宿主软件下运行的稳定性。

  稳定性测试实施

  整个稳定性测试的包括三大部分:

  1、场景的设计及实现

  2、稳定性测试的执行

  3、最后结果的校验

  场景设计

  测试场景一般是指模拟平常的压力,以及模拟实际中用户的日常操作,如果包含数据库,那么数据库要存有一定的数据。一般来说客户端产品的稳定性测试包括:

  自动化脚本

  自动化测试是稳定性测试的基础,对于使用标准控件的客户端软件来说,可以使用市面上较为通用的自动化及性能测试软件QTPLoadRunner,这些软件对标准控件支持较好,可以很方便快速的搭建起自动化测试的框架,为稳定性测试提供基础。

  但由于目前客户端软件的界面开发为了更加快速,同时融入业界前沿的皮肤技术,为用户创建更加高效,专业的界面,大多数都采用了DirectUI的技术,这种方式是直接在父窗口上绘图。即子窗口不以窗口句柄的形式创建,只是逻辑上的窗口,绘制在父窗口之上。对于这种非标准控件如果使用QTP等自动化测试工具就会显得力不从心了。

结果

  从稳定性的测试目的中可以得出在对稳定性结果的判断需要从以下几个方面进行:

  1、判断是否崩溃

  a)对于能够被崩溃上报进程捕获的的崩溃比较好办,可以通过判断是否有崩溃上报进程来进行判断。

  b)在测试机上安装任意的debugger工具(例如windbg)就可以检测各种类型的崩溃情况(只要有崩溃就会触发debugger的调用,检测是否出现debugger进程就ok)

  c)对于那种运行在宿主程序中的插件,单独插件的崩溃有时不会导致宿主程序的整个崩溃,所以对插件崩溃的检测需要记录运行正常时的pid或tid,发现其消失就判断为崩溃,因为插件运行在宿主程序中不是一个进程就是一个线程。

  2、判断是否假死

  a)对于单进程程序,只要主窗口发消息即可,找对主窗口是关键,通过枚举某个进程的全部窗口句柄,找parent为null,visible 为true,不是托盘程序的那个窗口句柄。

  b)强制主窗口重绘(这个重绘方式各产品可能不一样,有的发消息就可以,有的需要移动位置),然后截图,白色的就是假死(判断白色的已有现成的代码)

  3、判断是否存在性能劣化的趋势

  a)这点也属于性能测试中资源占用情况的测试,可以再稳定性测试的同时使用性能检测工具进行检测。

  待改进点

  1、自动化判断,定位异常信息。目前一些偶现的卡死和崩溃无法捕获到堆栈信息,对定位意义的不大,需要在崩溃或卡死时保留住现场,不能连续的执行后续的case。

  2、操作步骤及数据选取的随机性。可以考虑引入Fuzzy以及解析用户日志的方式增加操作步骤及测试数据选取的随机性。

  3、测试case在各个执行环境中循环切换的自动化。目前这种循环还是靠手工保证,后续可以考虑从在每台测试机器上动态调用测试脚本,代替手工的切换及运行。

  4、测试脚本的稳定性:稳定性的测试不仅是对被测程序稳定性的验证,同时也考验我们自动化测试脚本运行的是否稳定,而且在长时间的运行过程中可能会出现各种阻碍脚本运行的但却是正常的情况,所以需要增加各种判断和轮询的机制,另外为了保证场景的多样性都需要我们的脚本更加通用和周密,一不小心,被测程序还没挂呢,我们自己先停了……对于脚本的稳定性一直在测试的过程中不断完善,积累经验。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-31 04:32:18

客户端稳定性测试的相关文章

手机客户端UI测试分析

随着众多网站不断的在客户端的布局,不论是门户.社区.购物网站等都将手机客户端做为发展的一个方向,手机客户端仅局于一个小小的屏幕内,对于手机客户端的UI测试有着与网站不同的测试方式.从客户端起动界面开始,到运行过程,直至退出,UI测试都有着自己的规范和要求. 手机客户端测试人员在产品过程中的工作: 手机客户端UI测试常见的测试点:1.各种分辨率下,显示正常.现市场上主流的塞班V3系统手机为.240*320.320*240.WM系统主要为240*320.320*480.Android系统主要为320

Android平台新闻客户端耗电量测试

本期参与测试的软件智能手机的普及丰富了我们的碎片时间,但是没电的苦恼却困扰着几乎所有的智能手机用户.用android手机一定是好男人,因为晚上都要回家充电.这个段子绝对不是空穴来风,如果你手头正有这样一部电老虎似的智能机的话,那么充电器和数据线几乎就要随身携带了.熟悉互联网的朋友对RSS一定不会陌生,无论是奇闻怪事.明星消息.体坛风云,只要你想知道的,都可以订阅.同样的 Android平台中也有很多订阅软件可以实现与RSS类似的功能,通过个性化的订阅我们可以很方便的接收新闻.杂志.微博等的最新信

Spring REST实践之客户端和测试

  RestTemplate 可参考spring实战来写这部分. RestTemplate免于编写乏味的样板代码,RestTemplate定义了33个与REST资源交互的方法,涵盖了HTTP动作的各种形式,其实这些方法只有11个独立的方法,而每一个方法都由3个重载的变种. delete():在特定的URL上对资源执行HTTP DELETE操作 exchange():在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中映射得到的 execute():在

无线客户端测试流程随想

最近在写年度总结时,对目前项目iPhone客户端的测试流程做了一些分析.由于无线客户端产品和传统的Web端测试所注重的点大有不同,客户端的测试更关注视觉和交互,和各种场景下客户端的处理逻辑,所以测试流程也需要和传统的Web测试有所区别. 希望对无线测试有兴趣的同学们,一起讨论,一起分享... 1.目前客户端测试流程.(单线程流程) 1)单线程流程存在问题: (1)测试需要关注视觉,交互,功能等所有的问题,对测试自身专业技能要求过高.测试资源投入和产出比不高. (2)BugBash阶段发现交互,视

如何测试电脑超频是否稳定?

1.计算高位圆周率的时间有多长 Superπ superπ是由日本东京大学金田研究室开发的一款用来计算圆周率的软件,设计者的初衷当初只是在HITAC S-3800/480超级计算机上使用,由于在计算π值时,考验到了CPU的多方面计算能力,因此后来被日本的超频爱好者移植到PC上使用,借助Superπ来测试超频后的性能,后来慢慢传入我国,许多硬件实验室也使用这款软件作为测试CPU稳定性的依据. 运行程序时,点击"运行计算"按钮,此时会弹出一个对话框请你选择要运行的圆周率位数,一般采用104

端到端的802.11n测试

基于802.11n草案标准的无线产品已经大量出现,不过在现实的生产环境中,这些产品的性能究竟如何? 802.11n无线网络标准代表了无线网络的又一次进化,基于这一新的标准可以为企业提供更高的可移动性.随着802.11n的出现,无线数据传输的速度被提升到300 Mbps,这一性能的提升至少是现在无线局域网标准802.11a/b/g(54Mbps)的五倍,这为更多高要求的生产环境使用无线网络带来了新的契机. 思科和英特尔已经在许多重要领域开展协作,包括对下一代无线网络标准802.11n的交互性能和整

PC端稳定性测试探索

在PC客户端软件测试中,稳定性测试是必不可少的一项测试内容.一般在功能测试已经测试完成,缺陷完全修复完成以后进行. 稳定性测试是在保证客户端功能完整正确的前提下,通过对软件稳定性的测试可以观察在一个运行周期内.一定的压力条件下,软件的出错机率.性能劣化趋势等.进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证. 测试方法:通过自动化脚本,长时间运行客户端某些功能或长时间开关客户端,看客户端是否存在Crash现象,同时查看内存.CPU等性能指标. 一款PC客户端软件,它的稳定性

《移动App测试实战》——导读

前 言 现在已经是移动互联网的时代,借助手机等移动设备,人们可以完成资讯的获取.社交.游戏,以及日常生活的各种应用,甚至很多工作的开展.有很多新兴的移动互联网公司在崛起,也有很多传统的IT公司在转型,更有大量传统行业的企业在借助移动互联网拓展自己的业务.对IT技术人员而言,这是一个非常好的时代,有大量的工作机会,因为有大量的移动互联网相关系统的研发需求.当然,这也意味着有很多新的技术和方法要去学习.有很多的研发人员快速转型到移动互联网领域,有大量的移动互联网产品被开发出来.在这个过程中,也会面临

iTestin云测试工具

全球首款移动App自动化云测试软件 免费下载 软件版本:正式版 1.0 更新日期:2012-09-20 软件大小:17.7MB 支持系统:Windows XP或以上版本 特别提示:系统需安装.Net Framework3.5或以上版本 软件概述 iTestin是免费服务移动App开发者的真机自动化云测试客户端工具.基于真实的智能终端设备录制一个测试脚本然后运行,并输出运行结果.覆盖Android和iOS两大设备平台,支持Pad/Phone/Smart TV等智能终端设备.支持功能测试.UI测试.