最近把在工作中所做的一些应用实践分享出来和大家一起交流,先聊一下如何提高测试效率吧。测试效率就是测试产出和测试时间之比。假设测试产出是一个定值,那要提高测试效率,就是要缩短测试时间,那要怎么才能提高测试效率呢?
关于如何提高软件测试的效率目前我是这么来做的:
第一,大家是否在工作中经常遇到这两个情景:
1、上线前产品说这不是我想要的效果,这个逻辑不应该这样,应该……噼里啪啦一大堆,此刻开发和测试工程师心中一万只草泥马疯狂又无奈的奔腾着回眸一吐血…
2、测试根据自己对需求的理解提了几个bug,开发回头一口老痰说这根本不是个bug…
行业中有一个名词叫做需求评审,需求评审这个环节的确可以解决部分诸如此类的问题,但随着功能开发的继续,可能会发生些变化,比如在需求评审前没预料到的一些问题,具体例子就不举了哈,大家一定都曾遇到过。
字不如表,表不如图,所以在每个迭代开始前,我会要求每个测试工程师将自己负责的业务模块快速根据需求画出流程图,并与产品、开发等相关人员进行二次确认。这个过程既是在梳理业务逻辑,又是将测试、产品、开发三方意识统一战线;而且还可以评审出该功能可能会影响到某些功能等,可以使后续测试工作事半功倍。
第二,大家是否在工作中经常遇到这两个情景:
1、后端开发修改了某个小bug,push代码后需要经历一段很漫长的构建才能拿到最新效果,尤其是到晚上上线的时候,之前本人经历过只要构建需要等待30分钟左右的时间,当时跳楼的心都有了。
2、APP 端呢,就是只要一个小改动就得等待一个打包的时间去验证,打包这个时间,谁打谁知道,要有这个时间可能已经完成验证了。
果断在本地搭建一套测试环境,那么问题来了,在本地搭建环境如何确保测试环境的正确性呢?我们采用了Docker技术。本地测试环境搭建好之后,测试与开发之间的配合就更加高效了,只要开发push代码,测试切换至对应的分支pull一下本地重启即可,妈妈再也不用担心我找bug了~~
第三,到现在为止需求也明确了,测试环境也OK了,下一步要提高效率的就是构造测试数据了,这里我选用的是Jmeter,直接调用接口构造数据比手工在界面上操作效率能提高百倍不止。(《使用Jemeter对HTTP接口压测》)
第四,举个例子,比如在做APP端测试的时候需要截图上传至bug管理系统,一般大家会怎么做呢?这里我会写一个简单的Shell脚本来辅助完成(《Linux Shell脚本极简入门》),如下:
第五,针对bug 报告我想大家应该都已经非常clear了,当出现issue时应该在全链路中寻找运行时的错误日志以更便捷的来定位问题发生的位置、原因,进而使得我们可爱的开发工程师快速定位问题并解决;这个我想大家在实际工作中都是这么操作的,目的只有一个就是:提高测试与开发工作的效率。看似也简单实际上涉及到js、http、Linux日志查看(如sed、grep、awk 《Linux测试常用命令集》)等技术点,如果大家对这些还不熟悉的话,我后续可以针对每个技术点单独分享出来,大家一起交流。
第六,随着互联网业务快速的发展,作为互联网人是不是都感到压力山大,我从最早的一个月一迭代到两周、一周一迭代,到现在的每天每刻都在发布,鬼知道我经历了什么…苦逼的是测试人,只要开发有一个字母的修改提交,测试就需要回归整个系统,如果还像之前手工去跑回归那么结果只有一个:五一我在加班,中秋我在加班,好不容易一个十一小长假想干点什么的时候被leader 叫回公司加班orz(《自动化测试》)