发布新日志

  • 从桌面应用自动化测试看移动应用自动化测试

    anthony.wang 发布于 2012-12-07 16:19:32

    自从图形化界面成为个人桌面电脑的主流,应用程序复杂程度与日俱增,针对人机交互的自动化测试迫在眉睫,从而在市场上涌现了一大批针对图形界面应用程序功能测试的自动化测试工具(参考链接1)。2001QTP第一个版本发布;2002Robot初始版发布。自此,自动化工具已经经历了十年的发展。随着近两年移动应用呈现爆炸性的增长,移动应用自动化测试工具也开始陆续呈现(参考链接2)。

     

    需求的延续

    无论从PC端应用的自动化测试,还是移动应用的自动化测试,人们的关注点从未转移,期望也从不改变,那就是,尽可能多的模拟人工测试动作和相应的结果检查,从而释放手工劳动,替代大量重复性的执行和验证工作。进入移动应用时代,移动应用项目开发一直走的是“短小精干”的路子,即应用程序小而精。开发模式也抛弃了传统的规范流程,热衷于敏捷式开发。版本发布周期约来越短,迭代频密。这些似乎与自动化测试遥不可及。但是,随着移动应用逐渐从个人娱乐领域渗透到商业应用,诸如金融、办公、政务等方面的应用比重逐步扩大,对移动应用质量的要求也越来越高,自动化测试始终会回到人们的视线之内。在加上安卓特有的碎片化问题,使得安卓平台自动化回归测试和兼容性测试的呼声极高。

     

    理念的传承

    回顾桌面应用的自动化测试历程,我们看到,工具的发展经历了从最初“坐标点操作”过渡到“对象识别”的过程。移动应用测试工具走的路子也有几分相似。以开放的Android平台为例,最开始出现Monkey/MonkeyRunner等坐标点操作的工具(后来有很多工具开发商做了对MonkeyRunner的封装);之后出现了如Robotium等基于源码层面对于界面控件识别的工具;也有一些工具开发商如DroidPilot.com推出了纯粹的对象识别工具;当然,也有一些如PerfectoMobile.com的工具开发商,为了兼容iOS/BlackBerry/Windows Phone等平台,采用图像识别技术。但无论如何,“关键字驱动”、“数据驱动”等理念已经是传统PC行业自动化测试的成功经验,移动应用测试方面应该借鉴。再搭配性能测试工具、轻量级测试需求管理、用例管理、缺陷跟踪等工具,相信足以成为移动应用项目质量保证的基础工具支撑。

     

    有所不能vs凡事都能

    似乎所有管理者都期望一旦引入自动化测试,则万事大吉,貌似自动化能做到全方位的测试服务,可以释放测试工程师了。但事实求是的说,即使在拥有十年历程的传统自动化测试行业,自动化所能涉及的测试用例比例也是有限,通常覆盖60%80%的测试用例,已经能说是不错的成绩了。问题是,项目的成本和进度,以及测试人员的配备,是否能足以支撑自动化测试持续的进行。否则事半功倍,未免太可惜了。借鉴传统项目的自动化测试失败案例,对于项目预算相对较少的移动应用开发项目,考虑引入自动化测试的确需要慎之又慎。

     

    精益求精

    然而对于自动化测试工程师来说,通常并不满足于部分用例的自动化测试,甚至仅仅是自动化冒烟测试。他们总想走的更远,甚至不惜代价去完善一些凤毛麟角之功能。当然,从这一点也可以看出自动化测试工程师们精益求精的精神,同时,也对自动化测试工具开发者提出了更高的要求。从目前发展现状来看,他们也的确在着眼于提高工具的测试深度和广度,增强工具易用性,剥离工具对于源代码的依赖,延伸传统自动化测试的方法论。希望看到移动应用自动化测试领域呈现蓬勃的发展。

     

    参考链接

    1.       <List of GUI testing tools - wikipedia>
    http://en.wikipedia.org/wiki/List_of_GUI_testing_tools

    2.       <安卓应用自动化测试工具大汇总 测试窝>
    http://www.testwo.com/space.php?uid=11328&do=blog&id=5956

  • [转]利用Windows性能计数器分析软件产品的性能瓶颈

    jzhao 发布于 2007-04-19 16:11:34

    【摘要】
    本文详细介绍了Windows性能计数器在帮助查找软件产品性能瓶颈中的作用以及使用方法等,为开发、测试以及系统分析人员介绍一种简洁高效性能跟踪评估手段
     
    1          概述
    软件产品常常会出现这样的情况:产品性能因某些无法预料的瓶颈而受到干扰,导致程序的处理效率降低,性能得不到充分的发挥。如何快速有效地找到软件产品的性能瓶颈,则是我们感兴趣的内容之一。
    Windows 2000 附带的 Windows 性能监视器提供的性能计数器具有强大的功能,可以使我们能够获得系统或进程的各种详细信息,比如系统进程、CPU 利用率、磁盘活动、内存使用等等,巧妙灵活地利用这一工具,可以有效地帮助我们确定软件产品性能瓶颈所在
     
    2          使用说明
    Windows 性能监视器置于 Windows 操作系统之中,它允许用户访问系统性能数据。访问性能监视器的简单方法是,从“开始”菜单中,选择“开始”=>“程序”=>“管理工具”=>“性能”即可启动。如果“程序”菜单中没有“管理工具”程序组,请从控制面板中选择。
    图(1)展示了最初的性能监视器窗口。

    图(1)性能监视器窗口
     


    2.1         性能监视动态显示模式
    图(1)显示的是Winword进程CPU占用情况实时分布图。
    在视图区,点击右键,选择“添加计数器”,出现如下图所示窗口。

    图(2)添加计数器
     

     
     


           假设需要对Winword进程的CPU占用时间和句柄数进行监视,则进行如下操作:
    (1)       从“添加计数器”窗口中,选择性能对象为“Process”(进程);
    (2)       选中“从列表选择实例”;
    (3)       选中需要监视的进程,如Winword;
    (4)       选中“从列表选择计数器”,从列表框中选中需要监视的特性,如CPU占用时间、句柄数等;
    (5)       设置完毕,点击“添加”按钮,关闭窗口,即可实时监视选中的参数。
     
    动态监视的缺点是:监视周期只有140秒时长,并且数据不能连续输出到文件中。不能
    做后续分析。
     
    2.2         性能数据连续跟踪统计
    当需要对性能数据进行连续统计,并进行后续分析时,我们可以采用另外一种方式:启用计数器日志。
    图(3)展示了启用计数器日志的性能监视器窗口。

    图(3)添加计数器
     

     


    我们以监视Winword进程的CPU占用时间、物理内存和虚拟内存为例进行说明。
    (1)              如上图所示,在左边树图区,展开“性能日志和报警”项,在该分支下选中“计数器日志”;
    (2)              在右边视图区,点击右键,选择“新建日志设置”,在弹出的对话框中输入一个名称,如“MyCount”,应用后出现如下图(4)所示属性设置对话框;

    图(4)计数器属性设置
     

     
     


    (3)              点击“添加”按钮,出现如图(2)所示的“添加计数器”对话框;
    (4)              从“添加计数器”窗口中,选择性能对象为“Process”(进程);
    (5)              选中“从列表选择实例”;
    (6)              选中需要监视的进程,如Winword;
    (7)              选中“从列表选择计数器”,从列表框中选中需要监视的特性,如CPU占用时间、物理内存、虚拟内存等;
    (8)              设置完毕,点击“添加”按钮,关闭窗口,回到图(4)显示窗口;
    (9)              在图(4)对话框中,切换至“日志文件”属性页,如图(5)所示;

    图(5)日志文件属性设置
     

     


    (10)          在图(5)中,将日志类型设置为CSV格式,便于在Excel中导入;
    (11)          将日志大小设置为最大限度,也可以根据需要预设定文件记录大小;
    (12)          在图(4)对话框中,切换至“计划”属性页,如图(6)所示;

    图(6)采集计划定制
     

     
     


    (13)          采用默认计划,关闭设置对话框;
    (14)          开始采集监视对象性能数据,如果需要停止采集,手工终止即可。
     
    优点:可以设定采样频率,指定时长或者手工控制采样时长不间断地采集性能数据,并且
    可以多种格式存储数据,满足不同的需求,便于事后分析。
     
    2.2.2          性能采集数据分析
    采集的数据被记录到Execl文件中。数据记录如下:

    图(7)采集数据记录
     

     


    (1)       打开日志文件;
    (2)       选中需要分析的数据(列);
    (3)       点击工具条中的“图表向导”,出现如下图(8)所示对话框;

    图(8)图表类型设置
     

     
     


    (4)       选中“折线图”中的第一个图形,进入下一步;

    图(9)图表类型设置
     

     
     


    (5)       在图(9)中,将数据区域设置为从第二行开始;

    图(10)图表系列设置
     

     
     


    (6)       完成设置后,以新表格方式插入分布图。
    (7)       采用同样的方式,可以绘出物理内存、虚拟内存的分布情况。
     
    2.3         采集对象和可采集的参数
    性能计数器可监视的对象多达20种,每一种性能对象又包括若干个可供计数的性能参数满。以最常用的监视对象――进程为例,其可供计数的性能参数多达27种,如进程占用CPU的时间、句柄数、每秒IO字节数、每秒IO读字节数、每秒IO写字节数、虚拟内存、虚拟内存峰值、线程数目、物理内存、物理内存峰值等,能满足大部分需求。
     
    3          效果评估
    采样Windows性能计数器对进程的某些特性参数进行统计跟踪,能很好的发现软件的瓶颈和运行状态,特别是我们比较关心的CPU占用、内存使用情况等,具有较大的参考价值。

  • 软件测试读书列表 V2.0

    liangshi 发布于 2010-04-17 15:18:21

    列表格式为:图书分类、中文书名、英文书名、作者。排名不分先后,用红色标记出我推荐的书籍。


    测试入门

    软件测试(第2版)
    Software Testing (2e), Ron Patton
    一本测试入门的好书,较全面地介绍了各种测试领域和方法,为测试新手提供了正确的观念和宽泛的基础。

    软件测试的艺术(第2版)
    The Art of Software Testing (2e), Glenford J. Myers, Corey Sandler, Tom Badgett, Todd M. Thomas
    一本“久经考验”的测试经典:1979年,第一版面试;25年后,第二版登场。平心而论,有些观点已经不能直接应用在测试实践中,但是仔细品味仍有所收获。毕竟,这是一本需要思考的书,而不是操作手册。

    软件测试实战--测试Web MSN
    蔡为东
    以Web MSN为测试对象,形象生动地介绍了针对图形界面的黑盒测试技术,有很强的实践性。围绕一个实例,全面地的介绍各种测试方法,是此书区别于其他测试书籍的一大特色。附文《胶着》是作者一段开发经历的回顾与小结,有笑有泪,仅凭此文便值回书资。

    软件测试工程师面试指导
    蔡为东
    面向初学者,介绍了软件测试行业、测试工程师素质要求、基本测试技术、求职策略、面试技巧、典型试题,对于测试新手或迈向测试行业的朋友有较高的参考价值。此书还收录了一些对读者来信的回复,内容涉及职业规划、大学生就业、测试学习、测试实践等,针对当前常见的困惑,做出了谨慎且深思熟虑的回答。附文《我在微软做软件测试外包》对于了解微软中国的流程与文化很有参考价值。


    通用测试技术

    计算机软件测试(第2版)
    Testing Computer Software (2e), Cem Kaner, Jack Falk, Hung Quo Nguyen
    一本值得反复参考的好书,"The bestselling software testing book of all time" 的美誉绝非浪得虚名。作者将多年的实践经验用平实的语言娓娓道来,内容涉及测试技术、测试管理、开发流程、思考方法、实践模式,可谓是一本测试典籍。部分内容看似有些过时,但是其思想和方法仍旧有很高的借鉴价值。

    微软的软件测试之道
    How We Test Software at Microsoft, Alan Page, Ken Johnston, Bj Rollison
    微软的资深测试者审视微软当前的测试方法,并展望软件测试的未来发展。缺点是没有结合Windows或Office这样的著名且复杂的产品,详细讨论具体项目的具体技术。优点是提供了许多小故事,讲述了Windows、Office、Live等产品开发中的点滴。从经验传承、启发思路的角度,这些故事是全书的精华,具有很高的参考价值。

    测试有道:微软测试技术心得
    梁博, 许珊, 徐歆恺
    内容由一系列技术点组成,每一个点都有精要的描述和作者的心得体会,力图以小搏大,以精粹胜广博。但是没有提供一个理论框架将这些点有机地联系起来,读起来有只见树木、不见深林之感,也缺少“授人以渔”的独到见解。最大优点是介绍了一批免费且实用的工具,可以放在案头备查。

    软件测试基础:方法与度量
    Software Testing Fundamentals: Methods and Metrics, Marnie L. Hutcheson
    以风险分析为核心,讨论了测试计划、测试组织和测试设计。其中,关于“测试价值的可说明性”和“利用Office Suite来撰写、管理测试计划”的内容有启发性。适合有一定工作经验的测试人员参考。

    软件测试(第2版)
    Software Testing A Craftsmaj's Approach (2e), Paul C. Jorgensen
    将理论与工艺结合在一起的测试教科书。比较严谨地讨论了软件测试的基础理论,适合软件测试研究者研读。

    面向对象的软件测试
    A Practical Guide to Testing Object Oriented Software, John D. McGregor, David A. Sykes
    介绍了面向对象软件测试的基本思路和方法。第7章“测试类的层次结构”比较有启发性,讨论了针对继承的测试设计和组织,相关内容在其他测试书籍中并不多见。

    软件测试技术大全:测试基础、流行工具、项目实战
    陈能技
    该书由多位作者共同撰写,内容涉及测试理念、测试技术、测试开发、测试自动化、测试管理和常见的测试工具,不愧“测试大全”的书名。有些内容失之于粗糙,一些论述也不够严谨,缺乏参考文献更是此书的硬伤。瑕不掩瑜,此书理论和实践结合紧密,仍值得测试工作者学习和思考。


    测试管理

    笑傲测试--软件测试流程方法与实施
    魏伟
    以小说为体裁的测试管理书籍。通过令狐冲和风清扬的对话,从一个逐渐成长的新人的角度,介绍了测试管理的点点滴滴。全书轻松幽默,全无技术读本的枯燥乏味。附录所收录的文章“从新鲜人到新仙人”对于行业新人颇有帮助。

    步步为赢--软件测试管理全程实践
    蔡为东
    以“管理就是负责人”为核心,介绍作者担当测试领导的切身经验:自我管理、自我成长、编写测试计划、编写测试用例、执行测试、沟通、测试计划/用例评审、测试总结、员工管理、测试思想等。也适合第一线的测试工作者阅读,所涉及内容皆和他们的日常工作密切相关。



    专项测试技术

    软件安全测试艺术
    The Art of Software Security Testing: Identifying Software Security Flaws, Chris Wysopal, Lucas Nelson, Dino Dai Zovi, Elfriede Dustin
    软件安全测试的入门书,用很短的篇幅涵盖了软件安全测试的多个领域,为测试人员提供了模型、方法和工具。对于Threat Modeling的介绍很精彩,为进一步的行动提供了良好的理论与实践基础。

    Web安全测试
    Web Security Testing Cookbook: Systematic Techniques to Find Problems Fast, Paco Hope, Ben Walther
    一本实践性很强的Web安全测试手册。从网络安全的角度,介绍了一批免费的网络通信分析、监控、修改、调试工具;以条目为组织,介绍了的测试方法或策略;以实践切入,穿插介绍理论知识,通过精心选材和组织,降低了Web安全测试的门槛。

    实用软件测试指南
    How to Break Software: A Practical Guide to Testing, James A. Whittaker
    软件测试专家编写的实战指南,指导测试人员从攻击的角度展开软件测试。介绍了一些实用的测试工具,对于压力测试、极限测试有较强的参考价值。

    软件测试新技术与实践
    于秀山, 于洪敏
    介绍了组合测试技术在测试中的应用。适合组合测试研究者参考。

    Web应用程序性能测试指南
    Performance Testing Guidance for Web Applications, J. D. Meier, Carlos Farre, Prashant Bansode, Scott Barber, Dennis Rea
    微软模式与实践(pattern & practices)团队的佳作,介绍了性能测试的正确观念、流程和实践。篇幅短小,内容深邃,值得在实践中反复参考和体会。

    应用程序性能测试的艺术
    The Art of Application Performance Testing: Help for Programmers and Quality Assurance, Ian Molyneaux
    经验丰富的软件性能测试专家分享他的经验,内容包含性能测试的架构、模型、典型方法和结果分析。适合有一定经验的测试者参考。


    测试自动化


    .NET软件测试自动化之道
    .NET Test Automation Recipes:A Problem-Solution Approach, James D. McCaffrey
    该书讲解了在.NET平台上编写轻量级测试程序的实用技术。作者曾经在微软工作,该书与微软测试开发工程师的培训材料的契合度很高,实践性很强。对于Windows平台的测试工程师而言,此书的参考价值很高。

    .NET软件测试指南
    A Tester's Guide to .NET Programming, Randal Root, Ary Romero Sweeney
    严格来说,这是一本以测试为目标的讲解.NET编程的书。内容浅显、涉猎面广,适合没有太多.NET开发经验的测试人员参考。

    集成测试框架--用Fit进行敏捷软件测试
    Fit for Developing Software: Framework for Integrated Tests, Rick Mugridge, Ward Cunningham
    Fit是一种编写系统测试的测试框架,作为一种业务交流工具,它深刻地反映出敏捷软件开发的若干特质。此书由Fit之父亲自编写,不但可以了解Fit的方方面面,还能从中体会大师的感悟与实践。

    互联网单元测试及实践
    陈卫俊, 赵璨, 周磊, 陈洪
    介绍了常见的单元测试框架,并结合具体项目讲解了单元测试的基本理论和技术。对于Web测试的新手,有较高的参考价值。

    Visual Studio 2005 Team System软件测试专家教程
    Professional Software Testing with Visual Studio 2005 Team System: Tools for Software Developers and Test Engineers
    介绍如何利用Visual Studio 2005 Team System进行有效的单元测试、数据库测试、Web测试、负载测试和代码分析。以介绍概念和流程为主,适合新手快速上手。

    .NET软件测试实战技术大全:测试基础、流行工具、典型案例
    陈能技
    系《软件测试技术大全》的.NET版,在内容的深度和价值上,皆不及前者。胜在专注于.NET和Windows平台上的测试自动化,介绍了多种测试技术和工具,覆盖面广,且切合实践。适合.NET平台上的新手参考。


    经验总结

    软件测试:经验与教训
    Lessons Learned in Software Testing, Cem Kaner, James Bach, Bret Pettichord
    值得反复研读的经典好书。Tom DeMacro的赞美——“这些经验中的任何一个,都抵得上这本书的价钱”,所言非虚。

    完美软件--对软件测试的各种幻想
    Perfect Software: And Other Illusions about Testing, Gerald M. Weinberg
    该书没有介绍具体的软件测试技术,它讨论的是软件开发中的人、他们对测试的认知、软件测试的目的、实现目的的社会学和心理学上的探索。它试图建立正确的软件测试观念、协调的心理情绪和有效的思考方式。这些要素最终会决定在具体的项目中采用何种具体测试技术的组合。

    有效软件测试——提高测试水平的50条建议
    Effective Software Testing: 50 Specific Ways to Improve Your Testing, Elfriede Dustin
    测试领域的Effective C++,广受赞誉,所提供的50条经验有很强的实践指导意义。

    软件测试求生法则
    Surviving the Top Ten Challenges of Software Testing : A People-Oriented Approach, William E. Perry, Randall W. Rice
    作者讨论了测试人员所面临的十大“人际挑战”。从具体案例出发,介绍了挑战的表现形式、产生根源、解决方法和可能遇到的问题。虽然,外企的文化氛围与中国企业有一定差别,但是分析问题、解决问题的思路仍值得借鉴。

    赢在测试:中国软件测试先行者之道
    蔡为东
    介绍了一批测试先行者的个人经验的书。学习他人经验可以用较低的成本去扩大自己的体验,自然是他山之石可以攻玉,开卷有益。不过,个人经验非批判性地阅读与理解,不能有效,甚至有害,所以该书适合愿意学习且有能力学习的测试爱好者。不足是大部分被采访者都是管理者,没有真正的测试技术专家。

    软件测试精要
    董杰
    作者分享他在测试领域的经验与思考,其热情和思辨跃然纸上。缺点是内容却有些散乱,即便是一章,其系统性也有些不足;对于测试工具背后的测试思想,挖掘得比较浅,没有上升到测试理论的高度。

Open Toolbar