最近稍微得闲,就随便发篇灌水帖吧,原本没打算发社区里(不习惯 MD 编辑格式),在他人劝说下,还是发到 TesterHome 上来了,感兴趣的看官就当看小说吧。
因为是当成故事来写,又没有具体的技术分享,所以归类到灌水。

正文开始:

一、需求来源:

大部分测试,最开始从纯功能测试入门,做熟练后,容易陷入版本迭代和 PK 大战的汪洋中,以至于没有时间精力再去额外学习一些基础的测试技术(如某种编程语言、自动化测试工具),即使挤时间强迫自己学习,也不知道从哪里开始入手,很容易陷入人云亦云的尴尬,比如今年的趋势是安全测试,就去百度安全测试,明年是大数据自动化测试,就去百度大数据自动化测试。

如何在繁琐的手工测试工作中慢慢积累自身技术” 是测试同事普遍需要解决的一个问题。

二、前提条件:

1、对自己所在项目的业务流程、功能逻辑相当熟悉;

2、愿意牺牲一部分自己休息的时间;

3、骨子里是个想尽办法都要偷懒的人;

4、内心还是有学习新事物的愿望;

三、大致剧情(最近流行讲故事):

Step1:

对于项目的业务流程(包括细节)和功能逻辑已经相当熟悉,慢慢发现在每次版本的测试过程中,设计案例/验证/提 bug/与开发沟通只占 40%~60% 的时间。剩下的时间(甚至加班)用来干下列几件事情:

1、 构造测试数据,尤其是复杂系统的测试数据既珍贵又难造(比如放贷产品里突然造一笔逾 N 期未触发代位追偿的数据),在开发 BUG 频出的情况下,测试造数据的工作量更是翻倍增长;

2、 上游的流程因 bug 受阻,数据从上游过不来,等着开发改 bug 或手工模拟一个数据出来(大部分情况发现手工是很难模拟的,尤其是量级和复杂度较高的系统),时间一点一滴地在流失,但测试进度在原地踏步

3、 大量看似不相关又不知道真的是否相关的回归案例等着去执行,比如开发就动了一张配置表的某个基本信息,但按照理想测试情况,该信息涵盖到的功能是需要做最基本的冒烟测试的,全套跑下来,回归测试的时间占比高于非回归测试,但功能点就只改了那么一点点

Step 2:

实在受不了 step 1 中的事情,开始思考是否有一些偷懒的方法,能把简单而又重复的事情快速完成。于是在休息之余对下面几个方向进行了探索(真正忙于测试和 PK 时,大部分人没时间想这些):

1、 现在每次造数据的大部分时间是手工操作前端将数据走至测试前的状态,或者手工增删改查 + 调用一堆存储过程使一条数据变为测试前状态。前端能否按照我的意思自己走流程快速造条数据呢?后台我每次敲一堆 sql 命令造出来的数据能否按照我的意思自己跑呢?

2、 每次出现阻碍 bug 或开发优先级顺序倒置中前期测试时间浪费时,有没有办法避开这个坑?步骤是 12345,每一步的数据能否准确模拟出来?

3、 此问题看来貌似暂时无解,不去想了。

Step 3:

为了尝试 step 2 中的想法,开始做下面的事情:

1、 前端是 web 还是 app,如果要自动跑流程就要写点自动化脚本去让它跑起来,如果是 web,百度/谷歌之后发现 selenium 貌似不错,那就用 selenium 来跑吧。几经折腾写好几个单 page 脚本,可以自动跑想要的流程了,但发现维护的成本似乎太高,每次改动一下数据自己就要打开这几个单 page 脚本改好几行代码。

2、 开始想能不能进行简单地封装,我只需维护一张 excel 表格或一个配置文件,就能轻松更改几个脚本的数据源。又折腾了几天后,发现数据源基本不能复用,能否加一些处理脚本使每次自动产生一批可用却又不重复的数据,要做到这点就该去看看开发写的对应代码了。哎,好像不会,那就再抽点时间去网上学会基础编程吧,然后找关系好点的开发同事讲解下,把代码看懂了,拷贝下来,改成适合自己脚本的入参出参方式。啊!又发现语言不一样,能直接用 python 实现一个 java 里的功能吗?能,那就自己翻译,不能,那就自己去了解下 python 如何调用 java 代码吧。或者,每次跑完后,能自动执行一些写好的 sql 让这批数据回滚到最初状态,又要折腾两天充分了解这块业务对应了哪些表,这些表的关联关系、因果关系,还要花点时间实现脚本对数据库的无缝调用。

3、 要模拟每一步产生的数据,最直接的是去把开发的代码拉下来看,然后把它改成自己最爽的入参出参模式,用了几天,发现这么做是能节约一些时间,可每次要避开一个步骤,就要手工调用一次 mock 的单脚本,那要不把几个 mock 脚本封装成一个独立的项目,倒腾几天后自己这边确实做到了一键式产生 mock 数据。

4、此处省略一万字;

故事到这里 Stop:

其实各位看官可能已经明白了,工作中能从无到有,从少到多有效积累测试技术的过程是:
(1) 做了一段时间手工测试--->
(2) 对项目很熟悉(功能层面上)--->
(3) 项目中出现很多浪费时间的鸡肋问题--->
(4) 为了解决这些问题开始寻求并实施碎片化的解决方案--->
(5) 在不断想偷懒的动力下持续优化第四步的过程中,渐渐学会了编程、数据库、基本网络协议、各类测试框架、自己根据需求设计改写测试框架。

从(1)到(5)后,其实身上的 title 已经不是那么重要了,就算平时工作只做手工测试也是一名视野开阔,思考有深度的加强版手工测试。这一切最初的驱动都来自于业务项目本身,而不是网上谋篇帖子里提到的“高精尖万能技术流” 或 “一个月教你成大神的 XX 培训班”。这条路能不能走通,能走多远,完全取决于自己骨子里有多懒和是否愿意不停学习新事物。

PS:

作者第一次开始一本正经地写脚本是从 “自动整理组合甲方想看的测试结果” 开始的,目的也很简单,节约点时间,否则每次都是 select * from…+ 复制粘贴 +select x from…+ 复制粘贴折腾大半天,而且甲方一改报告显示需求只能哭还是哭。然后就在这条不归路上越走越远….

最后特别匿名感谢在这条路上帮助指导我的几名前辈(避免特意吹捧的嫌疑,此处匿名)。

临时更新:

没想到会收到社区的打赏,万分荣幸,后续会继续努力,谢谢社区的支持。
打赏二维码如下


↙↙↙阅读原文可查看相关链接,并与作者交流