如何自己开发软件测试工具

简介: 一说到自动化测试工具,大家很多人都会想到的是QTP、LR或者selenium之类的工具,要大家一开始设计一个这样的工具,其实确实很有难度,因为其包含的功能细节太过庞大。当年的我,开始设计开发工具的过程中,走了很多弯路,例如:做工具的界面技术的历程,刚开始用tcl/tk脚本语言,用tcl写底层框架,用tk写图形界面,后来发现tk虽然构造图形方便,但可拓展性实在太差。

一说到自动化测试工具,大家很多人都会想到的是QTP、LR或者selenium之类的工具,要大家一开始设计一个这样的工具,其实确实很有难度,因为其包含的功能细节太过庞大。当年的我,开始设计开发工具的过程中,走了很多弯路,例如:做工具的界面技术的历程,刚开始用tcl/tk脚本语言,用tcl写底层框架,用tk写图形界面,后来发现tk虽然构造图形方便,但可拓展性实在太差。就开始学用java的swing写界面,当时傻傻的从界面的布局,到界面的MVC框架,然后是各种图形的数据结构都是自己一点一点写出来的,但确实锻炼了能力,后来就开始掌握一些现成的图形框架,例如:java里的RCP、python的WxPython和PyQT.到现在更喜欢的是简单web框架,所以,现在将自己的工具开发之路简单分享一下,希望过来人不要走我的弯路,这篇文章虽说是说工具开发之路,但更多的是是一种学习思路,而且这一段旅程还很漫长,我也继续探索,也希望大家能得到一点启示,互相学习。

  一、自动化测试工具浅析

  在做自动化测试的这段日子里,现在也单独设计开发了一些公司对内和对外级别的工具,也设计开发过C/S和WEB方面的自动化测试平台,回首看来,从之前很简陋的工具,到现在客户应用级别的工具,真的颇觉时光飞逝。

  1、界面自动化测试工具,我们往往入门的时候都是用的商业或者开源的工具,例如:QTP、RFT之类,这些都是界面级别的自动化测试,界面自动化测试的有一定开发难度,但是确有不少的开源库可以提供,你完全可以基于以上库开发,或者有一些开源的工具很成熟了,你所做的就是基于以上进行一下更改。例如:测试java界面的工具就有aboot、swbot、mathron等开源工具,测试web界面的有selenium、watin等,测试移动端的有robotium、monkey等。要能二次开发这些工具,主要是需要理解抓取对象和回放的原理,然后是一些配置文件的处理,对象库里主要是XML的处理,一般录制功能我觉得可以忽略。

  2、白盒测试工具,一些代码级别的测试工具,例如:对代码覆盖率的分析、对代码质量的分析等,这方面涉及较浅,就不随便造次了。

  3、接口自动化测试工具,接口自动化测试工具在开发的时候,首先需要明确业务接口类型,然后掌握一定的接口工具的应用方式,一般的接口工具都是会解析某种接口定义文件,然后将接口文件以界面的形式展现出来,可以通过对界面接口的操作:对某个接口填写参数,然后发送到服务器端,查看响应,或者直接get接口返回值。例如:SoapUI工具是针对WebService系统的测试,主要是解析WSDL接口定义文件。Jmeter和LR也可以做接口测试工具,例如:java接口和HTTP接口等。之前,开发过的接口工具包括:SNMP接口和corba接口工具,其原理也是解析mib和IOR接口定义文件,然后可以对接口进行set与get操作。所以,开发这类的工具,一定要明确什么是软件接口、然后接口描述文件是什么,最后是如何去对接口进行操作,日志和结果的展现等,还有一些就是额外的功能了,例如:录制,将测试人员对接口的操作录制下来,成为工作流等。

  4、性能自动化测试工具,看到性能测试工具,大家很容易想到LR、Jmeter之类,这方面的工具,我用的较少,但是会基于自己公司内部的产品一些特殊性能场景方面的测试,会专门开发一些这样的工具,例如:开发一个发送SNMP网络报文的工具,模拟告警最大接收和并发性能,开发一个网元模拟器,能够模拟大量不同IP的网元,可以在公司网元管理器上测试同时管理的最大网元等。所以,性能测试首先要与业务场景相结合,然后掌握一定的性能基础和指标,分析好相关的接口协议和需要模拟的业务,就可以快速开发相应的工具了。

  5、系统应用级别的自动化测试工具,这种工具需要明确应用场景,即明确需求,例如:我之前开发一些部门内部工具集合,专门提供给测试人员进行脚本录制()、公司级别的有采集和巡检工具。(对外支持),这部分工具带来的效益是很大的。所以说,千万不要将自动化测试局限在测试方面,其实提高测试与开发的人员的效率、以及对公司产品的质量保障方面的工具都是能给公司带来直接效益的。也许几行代码也是一个能提升效率的好的工具。

  当然,还有很多方面的测试工具,因了解有限,就无法一一列举了,大家可以补充。

  二、如何快速开发一个自动化测试工具

  1、定位自己,发现目标:首先要看,你是否对软件开发感兴趣,其实我们测试人员往往把开发看得太深,所以很容易就因为觉得困难而不敢开始,如果你对软件确实有一些兴趣,何尝不试试,我们做的,不是要去开发一个多大的系统,我们的目标是能够做提高我们工作效率的事情,让我们的工作变得更高效、更有乐趣,学习知识的同时,还能带来价值,何乐不为。

  2、简单开始,立即上手:首先,在工作中积极发现需求,需求不需要太大,有时候一个点即可,找到需求点后,你可以向领导提出来自己的想法,然后进行可行性分析和立项,另外,很多人都担心因为不懂技术无法得到领导的认可,其实在首先最重要的是你的热情和决心,然后自己平时简单学一点入门知识就可以了,如果第一次尝试开发一个工具,千万不要一开始就把面铺太大,很多时候,我们总会被漫天的资料给淹没,天天在看书学习中渡过。我在公司带着测试人员做自动化测试项目时,往往告诉他们的是,不用害怕,直接上手,不会了再反过来查询资料或者咨询别人,千万不要一开始就拿着一本资料从头学到尾,这是我们大学应试带给我们的弊端,让我们往往忽视了实践中学习。当然,这是在有人带的情况下,如果没有人带你,那么你就找一个简单的语言,开始从最简单的实践起,大学我不是学计算机专业的,当年工作是从tcl脚本开始的,用tcl实现了简单的线性测试脚本、简单的测试框架开发等等,当时我采取的策略就是明确需求,然后拿着教程,一点一点开始攻克,困难肯定是有的,挨过去就好了。

  3、适合自己的流程才是好流程:我现在一般开发工具、平台都是采用流程为,需求分析+设计流程+设计模块+接口定义+开始开发,在开发中调整具体架构和细节。记得当年刚学到软件建模的时候,很喜欢用UML来定义我的开发流程,结果后来发现,小型的系统和工具,采用这种方式其实更是浪费了时间,UML的主要好处是团队沟通和交互,将系统抽象到大家都能理解的地步。所以,后来我明白了,不同的环境采用不同的流程,适合自己的开发流程才是好流程。

4、技术应用,步步深入:刚开始,不需要掌握多好的框架细节、多好的设计模式、多强的算法、多好的分布式和并行,也许刚开始,只需要线性编程,一步一个脚印即可,也可以尽可能的使用一些现成的框架,不需要太专研到框架的细节中去,例如:RCP界面框架可以让不用面对更少的界面布局的情况,让你的工具界面和eclipse类似,或者C++的MFC足以让你应对很多工具。当然,随着后面的工具难度的加强,你需要开始积累自己的知识,例如:专门有一个自己的库,包括收集和应用一些开源的库,例如:作业调度库、界面框架库、持久层映射库、日志和结果处理库等。还有一些自己的算法和功能库等。随着后来,建议可以多看看web系统方面的东西,毕竟这是个趋势。然后,多站在标准化和接口层次考虑问题。所以,我讲究的是顺其自然,踏踏实实,打好底层基础,对待新技术和框架,少追风,多思考。这样就会逐渐形成自己独特见解。


  5、抓准测试:一个工具开发过程中,你也需要进行版本管理和配置管理,你可以学会利用git和svn进行代码管理,学会利用maven和ant进行build,学会在开发工具的同时也学会一些开发和测试自动化流程。而在测试过程中,因为开发的工具不是非常系统化,所以可以主要从功能点(按照需求列好功能点测试)、异常分析(例如:合法性测试、异常操作测试等)、兼容性(之前写的C/S工具,因操作系统不同会有一些问题,而B/S工具,会因为浏览器的问题,而出现一些展示方面的问题,所以需要明确应用和测试环境)

  6、快速发布:千万不要将工具做到很完美才想着发布,没有什么是完美,我们所做的就是利用迭代的思想,一步一步去完善。所以,定义好阶段,快速发布,然后在发布中收集问题。毕

  竟是内部使用,所以能够及时反馈。

 


  总结:不管测试也好,开发也好,大家都是为了提高效率,找到自己的价值感而努力,但是很多时候,我们往往有所想,而无所为,就是因为总是把很多事情想的太复杂或者太简单,当然,这是我们每个人必须经历的过程,而我觉得,我们需要做的就是寻找自己的乐趣,如果我们迷惑了,就应该果断开始行动,只为相信我们做的事情是有价值的,积累的力量是很强悍的,在不知不觉中也许我们就挨过了很多困难,获得了很多东西。另外,大家如果看到这篇文章,是否能够也能留言分享一下各自在测试过程中自己开发和应用过的内部工具的想法和心得呢,或者说说自己的学习想法和迷惑吧,大家互相讨论。

技术改变世界! --狂诗绝剑
目录
相关文章
|
24天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
4天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
46 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
17天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
113 17
Selenium:强大的 Web 自动化测试工具
|
27天前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
38 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
26天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
58 1
|
28天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
45 2
|
1月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
49 2
|
1月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
1月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
184 2
|
1月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具

热门文章

最新文章