测试开发的技术 - 工具化

工具化

谈谈工具化。测试工具在早几年一直很受重视,之后逐渐减弱了它的地位。在开源库和测试开发流行之前,就有很多测试工具流行过了。今天我要讲的工具化与以前的测试工具不同,重点在自研新工具。自研工具是测试开发技术的主干,比脚本化更进了一步,用自研工具做测试开发入口是极好的

工具的分类

一些需要企业付费购买的工具,称为商业工具。比如惠普公司的:LR测性能,UTF(前身为QTP)测功能,QC ALM做测试管理。这些商业工具曾经是各大企业招聘懂一点技术的测试人员的标配,但近年来已经逐渐没落并被免费开源工具替代。

免费开源工具指企业不需要付给购买就能使用的工具软件,其源码公开,企业可以自行修改与扩展。免费的开源工具又分两种,一种直接能用的我称之为开源工具,比如jmeter用来测性能。另一种是用来对脚本化或自动化提供支持的软件包或代码库,我称之为开源库,比如selenium用来测web功能。

除了做性能测试、自动化功能测试、测试管理这三种最流行的工具以外,我们还能用到一些其他工具,包括但不限于:

1.版本控制工具如git,svn

2.持续集成工具如jenkins

3.缺陷管理工具如mantis,jira,禅道

4.抓包工具如fiddler,wireshark

5.移动端工具。(我不做移动端,就不举例了)

6.命令行工具。(linux上的命令行工具太多了,也不举例了)

我在八年前批量学习过四五十种相关的工具与库,来研究其共性和工具开发的原理,之后深入使用与扩展一些工具,再自研一些工具,但直到最近几个月才对工具开发有了比较深刻的认识。

工具化的核心

我们要学习工具并利用工具,但工具本身不足以成为测试开发人员的核心竞争力。十年前流行的QTP,如今几乎没人用了。jmeter之类现在流行的压测工具,在大厂被自研的全链路压测系统取代了。如果我们纯讲技术路线,那么掌握某个工具的使用细节并不算核心技术。我常遇到有人问我jmeter这个怎么用,那个怎么用。这些问题我都不回答。因为真的想知道,你可以去查jmeter官方文档、官方用户手册、去官方社区讨论组之类的地方求助。在谈工具化之前,我们需要首先破除对工具的迷信。

现成工具不是万能的,自研工具才是王道。为了自研工具,我们可以借助开源工具、开源库,掌握开源工具、开源库的原理。发现开源工具和开源库的缺点与缺陷,从而在开发自研工具时避开这些点。举个例子,selenium是一个极其流行的工具,但是它的接口设计并不优秀。selenium的接口设计一大部分都是为了兼容性而设计的。兼容性高是这个库得以流行的一大原因。我们可以用selenium操作很多种浏览器,可以用很多种语言写selenium脚本。但是,兼容性的代价就是接口设计的复杂和语法的冗余,甚至是架构体系的冗余。更具体地谈一下这个例子。这是我在某年去面某猫的真实面试题:“你熟悉selenium,但是我们的待测网页是内嵌在windows桌面端app某旺里的,请问怎样用selenium自动化。” 追问是“如果让你来开发一个类似于selenium的工具来对这个app里的网页做自动化,你怎么做。”要回答这个问题,我们很容易陷入误区,误区就是我要理解selenium的架构之后山寨一个。其实selenium的架构非常复杂,且其绝大部分的复杂架构是为了保证兼容性,但我们如果只是要自动化这个业务上的app,那并不需要参考selenium的架构,也不需要开发一个类似于selenium的工具。只需要调用这个桌面app的接口(如果有的化),或者直接用selenium在通用浏览器里测这几个网页。这个例子是为了告诉我们,开源工具的架构是以推广开源工具本身为第一优先级来设计的,而我们自研工具的架构则是以方便和用得爽为第一优先级来设计的两者架构思路完全不同。

改造或扩展某个开源工具,可以,但也称不上什么核心竞争力。这种做法的问题在哪里呢,我们如果用开源工具,那么开源工具需要升级,不升级就用不了新功能。升级就要引入新改动,新改动就可以导致新bug。而修自己的bug简单,修别人的bug就难了。所以第一个问题就是版本升级和bug的维修。

第二个问题是工具的整体更新换代和淘汰。就拿jmeter来说吧,假设有人是精通jmeter,不但精通jmeter还能给jmeter开发很多新功能。但是,他跳槽去的新公司如果是有成熟的全链路压测系统的公司呢,他的jmeter经验就完全派不上用场了。但是如果有人是精通性能测试,擅长调优linux、数据库、中间件等的性能。那么他的技能显然更有通用性,换公司也更容易。而且这类技能也不容易淘汰和变革

第三个问题是待测软件的更新换代。以前我们的待测软件大多数是网页。后来则是移动端app,再后来服务端测试也开始流行。可以说现在的测试岗位里,服务端明显比网页端和移动端强,强在自动化更简单。假设一个十多年前的测试人员,以某个网页自动化工具为核心竞争力,比如selenium。那么即使他selenium的各种细节都很熟悉,玩得很溜,现在能做的事情和十年前也没区别,还是自动化一些web操作,但市场却萎缩了很多。当年靠这一手就能去一线大厂,现在只会这一手可以去外包公司搬砖。所以,测试开发技术人员的技术方向要向不容易被淘汰的技术方向前进,也就是服务端,云端。

综上所述,核心竞争力应该在于使用开发语言来自研工具,而非掌握某特定的开源工具。

要提高自研工具的能力,显然就要提高程序设计能力。同时,要掌握测试开发的其他技术,再和工具化结合起来。现在世界一线的大厂,也在设计与开发结合多项测试开发技术的工具。比如亚马逊云AWS,开发了系统管理工具SSM。相当于强化版ansible,在ansible之上增加了权限控制、web console界面、aws自身资源控制等功能。属于结合了工具化、脚本化、可视化、服务化四项技术开发出来的工具。最近深入学习一些aws提供的工具,使我感受到工具化的发展方向,并不是目前国内大厂那种什么都塞进去的平台。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值