提升测试工具开发的思考

本文针对测试部效率提升测试工具开发、管理、维护暴露出来的问题的一些思考以及一些个人改进观点。

写在前面

  本文提到的效率提升测试工具不是指的部门中固有的自动化测试工具,这里提到的测试工具统一指测试人员在工作之余自主开发用于期望替代重复、繁琐、耗时的手工操作的测试工具,开发的目的是希望提升测试工作效率。不是针对专业工具开发部门团队的测试工具。

测试工具管理暴露的问题

  总体来说,测试内部发布的用于效率提升的测试工具整体质量不高,工具功能、性能、易用性、可维护性质量都不高。大部分测试工具通常都是谁开发的谁用的比较顺手,工具推广度不高。并没有真正让部门其他测试人员效率得到提升。针对这些问题简单调研了一下身边的同事原因,主要以下几个问题。

  1、工具不知道从哪里可以获取。这是测试部工具管理的问题。没有统一的发布路径、测试人员不知道当前测试部都有哪些测试工具可以用,不知道从哪里可以获取到。

  2、工具不会用。测试人员拿到工具不知道怎么使用。对一些相对复杂功能的测试工具没有使用指导书、没有联机帮助。甚至有一些工具开发的菜单、标签、工具名称起的都很含糊。不知道这个工具是要干嘛的。这些通常都是测试人员在开发工具时不考虑工具的易用性问题导致其他测试人员很难上手使用。举个例子,测试工具开发人员用 Python开发了一个windows平台工具但是并没有编译成可执行的.exe程序发布,其他人很难用,首先可能要下载python程序、其他要下载程序依赖的各种类库。用个工具这么麻烦很多人就不想用了。。

  3、工具不好用、经常出现问题。测试工具开发在实现工具时可能只针对某一个具体的场景、某一个具体的业务版本进行开发导致工具并不具备推广性。另外,一些工具交互太多甚至使用时有一些依赖外部条件需要设置程序才能正常执行等等都是导致不好用、没人用的原因。

  4、工具很难维护(可维护性问题)。工具开发人员技能不一、能力高低有区别、对编码规范的遵循程度也不一样。实现工具开发的语言多样化,主流的开发语言Python、Java等还好,如果是AutoIt、vbs等这些比较少用的语言开发的工具后期维护就很麻烦甚至就没人维护了。另外,测试人员毕竟没有对编码规范有很好的理解,代码怎么写的都有、几千行代码注释几乎为0,也没有开发文档说明,维护起来特别困难。

  5、工具需求开发随意、发布路径不统一、工具发布格式不规范。这也是管理的问题。工具没有统一的管理就会衍生出很多额外的问题。比如前文提到的不知道从哪里获取工具、工具没有指导书,我没有编码能力但是我识别出了工作中的短板需要开发工具可以把需求提交给谁。。等等。。这里,不是一定要强制某些工具不能开发,某些工具可以开发。从测试部整体角度来说,将工作量聚焦测试部topN效率短板提升的工具开发肯定是必要的。。

工具开发改进几点意见

  上面暴露的问题在我呆过的很多产品都遇到过,并不是个例。针对这些问题的解决方法,谈一下个人观点。

  1、工具统一管理。测试部内部发布工具开发规范、统一工具发布路径、工具发布格式(工具名称+版本号、工具主要功能、工具作者、工具维护历史、工具开发IDE等)。建议使用主流编程语言开发(Python、Java等),内部强调编程规范等。

 2、工具开发提高易用性。一是减少交互而是方便交互。减少交互主要是指没有必要的输入或者可以固化的输入就集成到软件中,需要依赖的步骤也可以直接在工具中实现。方便交互主要是指在windows系统使用时尽量提供界面化形式的交互窗口。windows上使用的程序培养的习惯是这样。对于linux下,命令行交互没有问题,但是每一步的输入提示描述尽量简单清晰。尽量可以达到傻瓜式的使用。实现的时候就从这个角度考虑。你不期望你给别人工具还要教他怎么用吧。。

 3、提高工具可用性。这是功能的问题。通常这些效率提升工具都是个人在工作之余花时间实现的,要求面面俱到也是很困难,但是尽量还是要保证主场景在绝大多数情况下运行正常,可以正常输出预期结果。不能换一个测试版本工具就出问题就好了,别人可能就不想用了。对于工具的完善可以在下一次迭代优化。这是每一个工具开发人员都是应该思考的问题。。你也不期望自己发布的工具别人一用就出问题。。对自己的形象也不好。。是吧

 4、提高工具可维护性。要求不高,就是多加一些注释,代码自己觉得可读性还可以。函数/类尽量划分的合理。至少保证自己过半年一年再回来看自己的代码还能快速读懂修改就差不多了。。

 5、工具定期宣传。定期挑选一些好用的、具有一定普遍性的工具进行推广。酒香也怕巷子深,每个工具开发作者也希望自己的劳动成果可以真正的让其他人受益,让自己的付出得到别人的认可。

  6、编码技能交流。测试人员整体编码技能还是相对较弱,工具的开发主要还是集中在一小部分人身上。可以将这部分人员统一集中起来多交流、探讨。也可以在测试内部推一些编码基础培训课程或者是一些基础文章,可以帮助有兴趣提升编码能力的测试人员。

小结

   工具开发管理维护使用暴露出的问题挺多的,其实没有啥。毕竟都是测试人员在业余时间开发的。做出来了总比没做出来好,做出来的东西只要稍加引导就可以不断迭代优化改进。不可取的是没有改进意识,容忍低效、重复、繁琐的手工执行工作,这样对自己没有什么好处。。


              【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战


四、App自动化项目实战

五、一线大厂简历


六、测试开发DevOps体系

七、常用自动化测试工具


八、JMeter性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—709.转换成小写字母【简单】

2023每日刷题&#xff08;五十八&#xff09; Leetcode—709.转换成小写字母 实现代码 char* toLowerCase(char* s) {int len strlen(s);for(int i 0; i < len; i) {if(s[i] > A && s[i] < Z) {s[i] tolower(s[i]);}}return s; }运行结果 之后我会持续更…

竞赛保研 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于python 机器视觉 的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 &#x1f9ff; 更多资…

如何正确选择打造自己的私域流量知识付费平台,我有才知识付费saas平台告诉你!

在当今数字化时代&#xff0c;私域流量知识付费平台已经成为企业和个人获取收益、扩大影响力的重要渠道。但是&#xff0c;如何正确选择并打造一个属于自己的私域流量知识付费平台呢&#xff1f;我有才知识付费saas平台为你提供一站式解决方案&#xff01; 一、功能全面&#…

【个人经验】Overleaf 在 two-column 格式中 插入图片 插入代码

一、在 two-column 格式中插入图片的方法 1.1 将图片上传至image文件夹 1.2 起始位置处导入包&#xff0c;并将图片上传至image文件夹 % 新增&#xff1a;为导入图片 \usepackage{graphicx} %导入包 \graphicspath{ {image/} } %image为文件夹名&#xff0c;可以在左侧自己…

MetaAI发布Seamless:两秒内实现跨语言同声传译

在当今日益互联的世界中&#xff0c;语言差异常常成为沟通的障碍。MetaAI最新发布的语音翻译大模型Seamless&#xff0c;正是为打破这一障碍而生。Seamless不仅提供流畅、高效的多语言翻译功能&#xff0c;更在保留说话人韵律和风格方面取得突破&#xff0c;是AI同声传译领域的…

harmonyos预览功能报错:[webpack-cli] SyntaxError: Unexpected end of JSON input

harmonyos预览功能报错 在使用DevEco Studio写页面&#xff0c;进行预览的时候报错&#xff1a; [Compile Result] [webpack-cli] SyntaxError: Unexpected end of JSON input [Compile Result] at JSON.parse (<anonymous>) [Compile Result] at updateCached…

CH03_生成实例

Singleton模式 单例模式&#xff08;Singleton&#xff09;&#xff0c;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 类图 说明 Singleton 在Singleton模式中&#xff0c;只有Singleton这一个角色。Singleton角色中有一个返回唯一实例的static方法。该…

使用Visual Studio(VS)创建空项目的Win32桌面应用程序【main函数入口变WinMain】

前言 在Visual Studio中直接新建Windows桌面应用程序会有很多多余的代码生成&#xff0c;本文将提供从空项目创建Win32项目的方法&#xff0c;解决新建空项目直接使用WinMain代码编译报错的问题 例如&#xff1a;LNK2019 &#xff1a;无法解析的外部符号 参考博客&#xff1…

kafka 详细介绍

目录 前言 分布式架构&#xff1a; 消息发布-订阅模型&#xff1a; 持久性存储&#xff1a; 分区和副本&#xff1a; 水平扩展&#xff1a; 高性能&#xff1a; 生态系统&#xff1a; 我的其他博客 前言 Kafka 是由 Apache 软件基金会开发的一种开源流处理平台&#xf…

常见的计算机图片格式

左rgb &#xff08;光源色彩&#xff09; 右cmyk &#xff08;印刷色彩&#xff09; 缺点&#xff0c;不能保存&#xff0c;储存空间太大

【概率方法】MCMC 之 Gibbs 采样

上一篇文章讲到&#xff0c;MCMC 中的 HM 算法&#xff0c;它可以解决拒绝采样效率低的问题&#xff0c;但是实际上&#xff0c;当维度高的时候 HM 算法还是在同时处理多个维度&#xff0c;以两个变量 x [ x , y ] \mathbf{x} [x,y] x[x,y] 来说&#xff0c;也就是同时从联合…

etcd集群部署、备份还原、etcdctl命令行工具

目录 前言什么是etcdetcd名词raft协议-摘抄自《etcd技术内幕》etcd的部署要求二进制部署etcd查看etcd命令帮助创建etcd集群&#xff0c;使用systemd管理&#xff0c;http协议创建etcd集群&#xff0c;使用systemd管理&#xff0c;https协议etcdctl客户端工具的使用为etcdctl创建…

如何利用视频号爆款数据分析平台,实现播放变现?

利用视频号爆款数据分析平台了解当下视频号热点视频&#xff0c;以及那个分类更有潜力&#xff0c;可以即使进行预判&#xff0c; 变现是近年来非常流行的一种商业模式。视频号爆款数据分析平台是视频下载plus的一个功能&#xff0c;可以让用户通过每天都热点数据以及热门榜单…

Qt6.5类库实例大全:QWidget

哈喽大家好&#xff0c;我是20YC小二&#xff01;欢迎扫码关注公众号&#xff0c;现在可免费领取《C程序员》在线视频教程哦&#xff01; ~下面开始今天的分享内容~ 1. QWidget介绍 QWidget 是 Qt 框架中的一个核心类&#xff0c;用于创建图形用户界面(GUI)应用程序的基本可视…

YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)

一、本文介绍 本文给大家带来的改进内容是LSKNet&#xff08;Large Kernel Selection, LK Selection&#xff09;&#xff0c;其是一种专为遥感目标检测设计的网络架构&#xff0c;其核心思想是动态调整其大的空间感受野&#xff0c;以更好地捕捉遥感场景中不同对象的范围上下…

【LeetCode刷题-字符串】--151.反转字符串中的单词

151.反转字符串中的单词 方法&#xff1a;从后向前遍历双指针 class Solution {public String reverseWords(String s) {//直接从后向前遍历&#xff0c;使用双指针int start,end;StringBuilder builder new StringBuilder();for(int i s.length()-1;i>0;i--){if(s.charA…

PHP基础 - 类型比较

在 PHP 中,作为一种弱类型语言,它提供了松散比较和严格比较两种方式来比较变量的值和类型。 松散比较: 使用两个等号(==)进行比较,只会比较变量的值,而不会考虑它们的数据类型。例如: $a = 5; // 整数 $b = 5; // 字符串if ($a == $b) {echo "相等"; // 输…

C语言 文件I/O(备查)

所有案列 跳转到其他。 文件打开 FILE* fopen(const char *filename, const char *mode); 参数&#xff1a;filename&#xff1a;指定要打开的文件名&#xff0c;需要加上路径&#xff08;相对、绝对路径&#xff09;mode&#xff1a;指定文件的打开模式 返回值&#xff1a;成…

【八】python装饰器模式

文章目录 8.1 装饰器模式简介8.2 装饰器模式作用8.3 装饰器模式构成8.3.1 装饰器模式包含以下几个核心角色&#xff1a;8.3.2 UML类图 8.4 装饰器模式python代码实现8.4.1 基本装饰器的使用8.4.2 多个装饰器的执行顺序8.4.3 带返回值的装饰器的使用8.4.4 装饰器模式-关联类模式…

「C++」内存管理

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;C启航 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 文章目录 &#x1f349;内存分布&#x1f349;关键字new&#x1f349;关键字delete&#x1f349;new和delete的封装实现&#x1f349;总…