如何自己开发软件测试工具?一篇文章教会你

news2024/9/22 3:57:39

目录

序言:

一、自动化测试工具浅析

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

总结:


序言:

一说到自动化测试工具,大家很多人都会想到的是QTP、LR或者selenium之类的工具,要大家一开始设计一个这样的工具,其实确实很有难度,因为其包含的功能细节太过庞大。

当年的我,开始设计开发工具的过程中,走了很多弯路,例如:做工具的界面技术的历程,刚开始用tcl/tk脚本语言,用tcl写底层框架,用tk写图形界面,后来发现tk虽然构造图形方便,但可拓展性实在太差。就开始学用java的swing写界面,当时傻傻的从界面的布局,到界面的MVC框架,然后是各种图形的数据结构都是自己一点一点写出来的,但确实锻炼了能力,后来就开始掌握一些现成的图形框架,例如:java里的RCP、python的WxPython和PyQT。

到现在更喜欢的是简单web框架,所以,现在将自己的工具开发之路简单分享一下,希望过来人不要走我的弯路,这篇文章虽说是说工具开发之路,但更多的是是一种学习思路,而且这一段旅程还很漫长,我也继续探索,也希望大家能得到一点启示,互相学习。

测试开发工程师视频教程:2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hX4y187wi/?spm_id_from=333.999.0.0


一、自动化测试工具浅析

在做自动化测试的这段日子里,现在也单独设计开发了一些公司对内和对外级别的工具,也设计开发过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实现了简单的线性测试脚本、简单的测试框架开发等等,当时我采取的策略就是明确需求,然后拿着教程,一点一点开始攻克,困难肯定是有的,挨过去就好了。    

 测试开发工程师视频教程:2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hX4y187wi/?spm_id_from=333.999.0.0


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


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


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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714128.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DevOps实现自动化发布实操

DevOps实现自动化发布流程 本篇文章来自 B站视频(部分步骤与视频存在差异) 流程图及原理 本地编写代码提交至远程仓库Jenkins(基于Docker)通过内置Git获取提交的代码,通过Maven进行打包,形成可执行文件&a…

数字信号处理实验:IIR数字滤波器设计及软件实现

目录 一、实验目的 二、实验原理 三、实验设备 四、实验内容及步骤 五、实验结果及分析 六、实验主程序框图及程序清单 七、实验总结 一、实验目的 熟悉用双线性变换法设计IIR数字滤波器的原理与方法;学会调用MATLAB信号处理工具箱中滤波器设计函数&#xff…

还在手动下载github项目?想要自动化下载github项目?基于python开发项目自动下载模块帮你实现自动下载存储

GitHub是一个基于Web的代码托管平台和开发者社区。它允许开发者存储、管理和分享他们的代码,并进行版本控制。开发者可以在GitHub上创建仓库来存储项目代码,并使用Git来跟踪和管理代码的变更历史。GitHub提供了一系列协作工具,如问题追踪、Pu…

一波三折|药学博士终获CSC资助赴瑞典隆德大学从事2年博士后研究

我们先为W博士获得美国哈佛大学布列根和妇女医院的邀请函,助其成功获得CSC公派资助,但后被哈佛大学国际中心以可能拒签为由,不予办理DS-2019表格。幸亏我们未雨绸缪先期又申请到瑞典隆德大学的2年博士后邀请函,最终顺利得到CSC改派…

CAS + 自旋 锁底层

多线程安全问题 为什么会出现多线程安全问题? 在多线程并发下, 假设有 A,B 两个线程同时操作 count 0 这个公共变量, 在A线程中count, 在B线程中count, 正常来说结果应该是 count 2, 可是同时在A, B两个线程中拿到 count 0 , 并且都执行count赋值, 结果就变成了 count 1…

【Java可执行命令】(十一)Java 密钥库和证书管理工具keytool:玩转密钥库和证书管理,深入解析keytool工具的应用与技巧~

Java可执行命令之keytool 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 生成证书请求:keytool -certreq3.3 导出证书:keytool -exportcert3.4 生成密钥对:keytool -genkeypair3.5 导入证书或证书链:keytool -importcert3…

基于STM32的直流电机调速系统

目录 基于STM32的直流电机调速系统一、原理图二、部分代码三、视频演示 基于STM32的直流电机调速系统 功能: 1.通过LCD屏幕显示实时两个电机的占空比 2.通过按键调整电机1和2的加减速 3.通过L298N驱动两个直流电机完成调速 一、原理图 二、部分代码 #include &qu…

基于Spring Boot + Vue社区管理系统的设计与实现

1、项目介绍 Spring Boot 是一个用于构建 Java 应用程序的开源框架,它使得开发者可以轻松地创建独立的、生产级别的 Spring 应用程序。Vue.js 是一个流行的 JavaScript 框架,用于构建现代化的、响应式的社区管理系统是一个用于管理社区活动、用户信息和…

Vue发布新版本,强制更新代码的方式

public下新建version.json文件定义版本 {"version":"1.1.0" } util下新建updateVersion.js import axios from axios; import { Loading } from element-ui; var t1; var t2; export async function isNewVersion() {var randomNumberMath.random() co…

[软件工具]左键连发工具左键连点工具使用教程

左键连发软件是一个可以点击一下自动左键连续点击指定次数的软件,比如你设置20次,当你点击一次松开鼠标后,会自动左键连续点击20次。具体使用教程为,我们打开软件 我们可以设置连发次数,默认15次,你可以设置…

Zabbix如何对接Prometheus

一、简介 云原生和容器广泛流行打破传统的技术堡垒,现在Prometheus监控得到越来越多企业应用和探索。对于已经存在Zabbix监控系统的用户又想尝试Prometheus而言,在Zabbix4.2版本及5.0 LTS版本正式发布增加了对Prometheus数据源的接入,后续都…

人机环境系统中的一多分有问题探讨

在一般的事物中,一多关系通常指的是一个事物与多个其他事物之间的关系。一多关系可以带来更多的选择和多样性,使事物更加丰富多样。不同的事物之间相互影响和交融,可以产生新的创意和发展机会;不同事物之间的各种关系需要平衡各自…

leetcode 203.移除链表元素

⭐️ 题目描述 🌟 leetcode链接:移除链表元素 1️⃣ 代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*//*思路1:遍历链表,同时用另一个指针记录当…

IDA c++分析辅助插件ida_medigate使用记录

1.下载插件 IDA_medigate 2.将medigate_cpp_plugin.py放到 ida的plugin文件夹中 plugins/ida-referee/referee.py 放置到plugin中 3.将下载的 ida_medigate 放到IDA 内置的python38的Lib\site-packages\目录下 如:D:\IDA_Pro_7.7\python38\Lib\site-packages4.配置插件搜索…

大厂面试官:软件测试员,你的简历,是如何石沉大海的?

引言 俗话说:知己知彼百战百胜,面试如打仗,不是面试官赢,就是求职者胜。站在面试官的维度来跟求职者聊天,让求职者知道面试官的心理。 因为我本身作为一面多年的大厂面试官,相对来说还是有一些面试经验&am…

股价在5年内暴涨了3000%后,Enphase Energy未来还会继续上涨吗?

来源:猛兽财经 作者:猛兽财经 Enphase Energy股票的关键指标 最近很多人都在关注Enphase Energy(ENPH)的关键指标,包括该公司第二季度的指引和最近的股价调整。 2023年4月25日收盘后,Enphase Energy公布了…

leetcode每日一题——80.删除有序数组中的重复项II(面试经典150题)

一、题目描述与要求 80. 删除有序数组中的重复项 II - 力扣(LeetCode) 题目描述 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用…

NodeJS安装教程(详细)

系列文章 MySQL安装教程(详细) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520 MySQL卸载教程(详细) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129279265 …

Linux 内核源代码情景分析(一)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 深入理解Linux虚拟内存管理 Linux 内核源代码情景分析(一) 文章目录 系列文章目录一、存储管理1、外部设备存储空间的地址映射(1&#xff…

LinK3D论文详解

摘要 特征提取和匹配是许多计算机视觉任务的基本部分,例如二维或三维物体检测、识别和配准。众所周知,二维特征提取和匹配已经取得了很大的成功。遗憾的是,在3D领域,由于描述能力差和效率低,目前的方法无法支持3D激光雷…