序言:一说到自动化测试工具,你们不少人都会想到的是QTP、LR或者selenium之类的工具,要你们一开始设计一个这样的工具,其实确实颇有难度,由于其包含的功能细节太过庞大。当年的我,开始设计开发工具的过程当中,走了不少弯路,例如:作工具的界面技术的历程,刚开始用tcl/tk脚本语言,用tcl写底层框架,用tk写图形界面,后来发现tk虽然构造图形方便,但可拓展性实在太差。就开始学用java的swing写界面,当时傻傻的从界面的布局,到界面的MVC框架,而后是各类图形的数据结构都是本身一点一点写出来的,但确实锻炼了能力,后来就开始掌握一些现成的图形框架,例如:java里的RCP、python的WxPython和PyQT。到如今更喜欢的是简单web框架,因此,如今将本身的工具开发之路简单分享一下,但愿过来人不要走个人弯路,这篇文章虽然说是说工具开发之路,但更多的是是一种学习思路,并且这一段旅程还很漫长,我也继续探索,也但愿你们能获得一点启示,互相学习。
1、自动化测试工具浅析
在作自动化测试的这段日子里,如今也单独设计开发了一些公司对内和对外级别的工具,也设计开发过C/S和WEB方面的自动化测试平台,回首看来,从以前很简陋的工具,到如今客户应用级别的工具,真的颇觉时光飞逝。
一、界面自动化测试工具,咱们每每入门的时候都是用的商业或者开源的工具,例如:QTP、RFT之类,这些都是界面级别的自动化测试,界面自动化测试的有必定开发难度,可是确有很多的开源库能够提供,你彻底能够基于以上库开发,或者有一些开源的工具很成熟了,你所作的就是基于以上进行一下更改。例如:测试java界面的工具就有aboot、swbot、mathron等开源工具,测试web界面的有selenium、watin等,测试移动端的有robotium、monkey等。要能二次开发这些工具,主要是须要理解抓取对象和回放的原理,而后是一些配置文件的处理,对象库里主要是XML的处理,通常录制功能我以为能够忽略。
二、白盒测试工具,一些代码级别的测试工具,例如:对代码覆盖率的分析、对代码质量的分析等,这方面涉及较浅,就不随便造次了。
三、接口自动化测试工具,接口自动化测试工具在开发的时候,首先须要明确业务接口类型,而后掌握必定的接口工具的应用方式,通常的接口工具都是会解析某种接口定义文件,而后将接口文件以界面的形式展示出来,能够经过对界面接口的操做:对某个接口填写参数,而后发送到服务器端,查看响应,或者直接get接口返回值。例如:SoapUI工具是针对WebService系统的测试,主要是解析WSDL接口定义文件。Jmeter和LR也能够作接口测试工具,例如:java接口和HTTP接口等。以前,开发过的接口工具包括:SNMP接口和corba接口工具,其原理也是解析mib和IOR接口定义文件,而后能够对接口进行set与get操做。因此,开发这类的工具,必定要明确什么是软件接口、而后接口描述文件是什么,最后是如何去对接口进行操做,日志和结果的展示等,还有一些就是额外的功能了,例如:录制,将测试人员对接口的操做录制下来,成为工做流等。
四、性能自动化测试工具,看到性能测试工具,你们很容易想到LR、Jmeter之类,这方面的工具,我用的较少,可是会基于本身公司内部的产品一些特殊性能场景方面的测试,会专门开发一些这样的工具,例如:开发一个发送SNMP网络报文的工具,模拟告警最大接收和并发性能,开发一个网元模拟器,可以模拟大量不一样IP的网元,能够在公司网元管理器上测试同时管理的最大网元等。因此,性能测试首先要与业务场景相结合,而后掌握必定的性能基础和指标,分析好相关的接口协议和须要模拟的业务,就能够快速开发相应的工具了。
五、系统应用级别的自动化测试工具,这种工具须要明确应用场景,即明确需求,例如:我以前开发一些部门内部工具集合,专门提供给测试人员进行脚本录制()、公司级别的有采集和巡检工具。(对外支持),这部分工具带来的效益是很大的。因此说,千万不要将自动化测试局限在测试方面,其实提升测试与开发的人员的效率、以及对公司产品的质量保障方面的工具都是能给公司带来直接效益的。也许几行代码也是一个能提高效率的好的工具。
固然,还有不少方面的测试工具,因了解有限,就没法一一列举了,你们能够补充。
2、如何快速开发一个自动化测试工具
一、定位本身,发现目标:首先要看,你是否对软件开发感兴趣,其实咱们测试人员每每把开发看得太深,因此很容易就由于以为困难而不敢开始,若是你对软件确实有一些兴趣,未尝不试试,咱们作的,不是要去开发一个多大的系统,咱们的目标是可以作提升咱们工做效率的事情,让咱们的工做变得更高效、更有乐趣,学习知识的同时,还能带来价值,何乐不为。
二、简单开始,当即上手:首先,在工做中积极发现需求,需求不须要太大,有时候一个点便可,找到需求点后,你能够向领导提出来本身的想法,而后进行可行性分析和立项,另外,不少人都担忧由于不懂技术没法获得领导的承认,其实在首先最重要的是你的热情和决心,而后本身平时简单学一点入门知识就能够了,若是第一次尝试开发一个工具,千万不要一开始就把面铺太大,不少时候,咱们总会被漫天的资料给淹没,每天在看书学习中渡过。我在公司带着测试人员作自动化测试项目时,每每告诉他们的是,不用惧怕,直接上手,不会了再反过来查询资料或者咨询别人,千万不要一开始就拿着一本资料从头学到尾,这是咱们大学应试带给咱们的弊端,让咱们每每忽视了实践中学习。固然,这是在有人带的状况下,若是没有人带你,那么你就找一个简单的语言,开始从最简单的实践起,大学我不是学计算机专业的,当年工做是从tcl脚本开始的,用tcl实现了简单的线性测试脚本、简单的测试框架开发等等,当时我采起的策略就是明确需求,而后拿着教程,一点一点开始攻克,困难确定是有的,挨过去就行了。
三、适合本身的流程才是好流程:我如今通常开发工具、平台都是采用流程为,需求分析+设计流程+设计模块+接口定义+开始开发,在开发中调整具体架构和细节。记得当年刚学到软件建模的时候,很喜欢用UML来定义个人开发流程,结果后来发现,小型的系统和工具,采用这种方式其实更是浪费了时间,UML的主要好处是团队沟通和交互,将系统抽象到你们都能理解的地步。因此,后来我明白了,不一样的环境采用不一样的流程,适合本身的开发流程才是好流程。
四、技术应用,步步深刻:刚开始,不须要掌握多好的框架细节、多好的设计模式、多强的算法、多好的分布式和并行,也许刚开始,只须要线性编程,一步一个脚印便可,也能够尽量的使用一些现成的框架,不须要太专研到框架的细节中去,例如:RCP界面框架可让不用面对更少的界面布局的状况,让你的工具界面和eclipse相似,或者C++的MFC足以让你应对不少工具。固然,随着后面的工具难度的增强,你须要开始积累本身的知识,例如:专门有一个本身的库,包括收集和应用一些开源的库,例如:做业调度库、界面框架库、持久层映射库、日志和结果处理库等。还有一些本身的算法和功能库等。随着后来,建议能够多看看web系统方面的东西,毕竟这是个趋势。而后,多站在标准化和接口层次考虑问题。因此,我讲究的是顺其天然,踏踏实实,打好底层基础,对待新技术和框架,少追风,多思考。这样就会逐渐造成本身独特看法。
五、抓准测试:一个工具开发过程当中,你也须要进行版本管理和配置管理,你能够学会利用git和svn进行代码管理,学会利用maven和ant进行build,学会在开发工具的同时也学会一些开发和测试自动化流程。而在测试过程当中,由于开发的工具不是很是系统化,因此能够主要从功能点(按照需求列好功能点测试)、异常分析(例如:合法性测试、异常操做测试等)、兼容性(以前写的C/S工具,因操做系统不一样会有一些问题,而B/S工具,会由于浏览器的问题,而出现一些展现方面的问题,因此须要明确应用和测试环境)
六、快速发布:千万不要将工具作到很完美才想着发布,没有什么是完美,咱们所作的就是利用迭代的思想,一步一步去完善。因此,定义好阶段,快速发布,而后在发布中收集问题。毕
竟是内部使用,因此可以及时反馈。java