无界面应用功能自动化测试工具Peach-软件功能测试自动化实战教程(7)

发表于:2015-4-08 08:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:周焕来、贾海涛    来源:51Testing软件测试网原创

  第十一章  无界面应用功能自动化测试工具Peach
  目前主流的自动化测试工具虽然都能完成软件自动化测试,但是其测试效率依赖于测试人员对被测软件的认知程度,并且这些工具需要编写专门的脚本,使用门槛也较高。本章将介绍一种简单的开源自动化黑盒测试工具Peach,主要针对于无界面应用程序,该工具可以使用户最大程度的从被测程序中脱离出来,专注于测试过程,不用编写测试脚本,只是依赖于一个XML配置文件,是一种简单而且高效的自动化测试工具,并且支持二次开发。
  11.1  概述
  Peach是用Python开发的跨平台开源Fuzzing测试框架,开发的最初目的是供安全研究人员使用,以加速模糊测试的发展,是可以证明的最为灵活的框架,并且最大程度地促进了代码的重用。源码可以在网站http://peachfuzzer.com/上下载,目前有三个版本。Peach框架提供了一些基本的构件以创建新的模糊测试器,包括生成器、转换器、协议、发行器以及群组。
  生成器负责生成从简单的字符串到复杂的分层二进制消息范围内的数据,可以将生成器串接起来以简化复杂数据类型的生成。并且,将数据生成抽象到自定义的对象中就可以很容易地在所实现的模糊器中进行代码重用。例如,考虑在一个SMTP服务器的审核过程中开发了一个邮件地址生成器,该生成器可以明显的在其他需要生成邮件地址的模糊器中被重用。
  转换器以一种特定方式来改变数据。默认转换器包括base64编码器、gzip以及HTML编码器等。转换器也可以被串接起来使用,也可以将其绑定到一个生成器。例如,一个生成的邮件地址可以通过一个URL编码器的转换器来进行传递,然后再通过一个gzip转换器传递。同样,将数据转换抽象到自定义的对象中就可以很容易地在所实现的模糊器中进行代码重用。一个给定的转换被完成,那么它就可以明显地被所有以后所开发的模糊器来重用。
  发行器通过一个协议实现了针对所生成数据的一种传输形式。默认发行器包括文件发行器和TCP发行器。同样,将此概念抽象到自定义的对象中也促进了代码的重用。尽管在当前的Peach版本中还是不可行的,但是发行器的最终目标是为任意的生成器提供透明的接口。例如,考虑你创建了一个GIF图像生成器。该生成器应当能够通过简单的产生一个特定的发行器来发布一个文件或者传递到一个Web表单。
  群组包含一个或者多个生成器,它是对生成器可以产生的值进行遍历的一种机制,Peach包含一些常用的群组实现。另一个额外的构件是脚本对象,它是一个简单的抽象以减少实现group.next()和protocolo.step()等循环所需要的多余代码的数量。
  11.2  工具适用场景
  Peach使用命令行启动被测软件,并传递数据,所以常用于测试可以通过命令行传递数据的应用,对于单纯依靠界面控件来传递数据的应用,暂没有很好的支持。
  11.3  工具原理
  Peach通过分离数据状态模型和测试引擎,实现快速模糊测试,同时其还提供了强大的代理检测系统,可以实时监控模糊测试运行,检测故障,供相关人员分析使用。
  Peach模糊测试工具主要由四个模块组成,即数据定义模块、数据变异模块、逻辑测试模块和错误检测与日志模块,各功能模块间的关系如图11-1所示。
  
  数据定义模块:定义原始数据包格式和文件格式,一般需要测试人员自己完成,在编写这个模块时需要分析被测目标的输入集的特征,即各数据域的约束条件。
  数据变异模块:在原始数据定义的基础上,调用一定的数据变异策略,衍生出成千上万的测试用例,如畸形文件或者畸形数据包等。
  逻辑测试模块:运行目标程序,发送测试用例,关闭目标程序。对于不同的测试目标逻辑上可能有所不同,例如,测试协议可能需要模拟若干次用于握手的数据包;测试GUI程序可能需要模拟鼠标点击等。
  错误监测与日志模块:在测试过程中,监测一切相关进程的各种exception、crash等信息,并在错误发生时保存现场,记录对应的内存数据、栈信息、寄存器信息等重要状态,以备分析使用。
  在Peach的四个模块中,"数据变异模块"和"错误检测与日志记录模块"由Peach Fuzz 平台提供。数据定义模块由测试人员自己完成,最终的Fuzzer能不能找到问题,能不能找准问题的关键就在数据定义的编写。对数据结构理解的越深,对程序思考的越多,编写的Fuzzer就越高效。测试逻辑模块一般有测试人员部分完成,最简单的就是一条命令run某个程序把测试用例跟在后面当参数;若是协议,需加上若干个send revive和状态判断逻辑,遇到GUI程序则必须去模仿鼠标单击动作。
本文选自《软件功能测试自动化实战教程》,本站经作者的授权。
版权声明:51Testing软件测试网获作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号