最近在面试一些测试人员,简历上都写了解自动化测试,但是实际发现就是使用过一些jmeter、soapUI、selenium以及appium,而且还是简单使用。简单使用,导致一旦被问起,就很不自信的找理由说,公司里面没有太多机会使用,所以才没有很深入的研究。这个理由,我可以理解,因为我也使用过,本人在软件测试这条路上,已经走了9年,做了4年多自动化测试的工作,能力一般,但是多多少少有些自己的感悟。
4年前,我的想法和做法,和很多人一样,找工具学习,找机会使用,学习java、python。结果也和很多人一样,那些烂大街的能力,根本拿不出手。说是烂大街的能力,并不是说以后不需要学习了,我现在可以做自动化测试,这些烂大街的能力也是功不可没的。
之所以那些能力,没有被使用到实处,个人觉得是因为把测试的根本使命抛在脑后,一味的跟风,追求高大上,缺少自己的思考,导致输出的内容和被测对象根本匹配不上。
上面说到测试使命,谈谈我个人的理解。测试使命,就是在一个项目周期内发现更多的软件问题。
这里有两个关键字,项目周期和更多问题。
项目周期:一个项目肯定会设置开始和结束时间,那么就会有一个相对固定的时间段。
更多问题:力求发现更多的问题。如果把问题数除以时间,那么就是等于发现问题的速率,换句话说就是测试效率。
综上所述,如果要把测试的使命落实,那么就必须要将重点放在测试效率上。
个人认为做任何事,想要提升效率,就先要找到好的方法。而找方法前,必须先明确目的。这个目的,可以是解决软件测试过程中某个困难点,也可以是减少某些重复操作。有了目的,才能探索并优化方法,去提升效率。
如何提升测试效率?
个人觉得可以使用一些理论概念,或是特定的工具,来减轻无效以及重复的工作量,使得在有限的时间内,进行更多的有效测试。
理论概念:测试的理论知识,比如等价类,边界值等,它可以帮助我们减少很多无效测试,从而提升效率。
工具:也就是测试工具,我觉得非常重要。它可以是一套文本说明,一段小脚本,亦或是一组应用工具。
上面提到提升效率,很多人脑海中第一反应应该是自动化测试,既可以节省人力,还可以节省测试时间。因为这个意图,很多人很多公司都开始开展自动化测试。但是结果发现,大部分人或者公司的自动化测试,要么很粗浅,无法应用,要么已经夭折。只有极少数的公司,因为拥有充足人力或技术底蕴,才让自动化测试正常落地。因此自动化测试被人又爱又恨。
我觉得造成这样的后果,并不是自动化测试的问题。自动化测试是一种解决测试人员重复劳动的方法,主要由测试框架和测试脚本用例组成,但究其本质就是一种测试工具而已,如果将提升测试效率的重担全部压在一种工具上,显然是不合理的。
那么怎样才算合理?或者说我的观点是什么?
1. 首先我觉得自动化测试还是要进行,我们不能否认,它在减轻重复劳动的能力。
2. 其次我们应该多观察普通的手工测试过程,把一些手工执行的内容工具化,逐渐将手工测试转为测试自动化。注意这里是测试自动化不是自动化测试。它们的区别可以自己查一下资料。
只有落实测试使命,在有限的时间内容多发现问题,那么你是用的方法才是有效地,才是继续进行下去的动力。所以我的的建议是,把注意力多放一些在自己本身的工作,多发现一些可以优化的地方,或者说痛点。与此同时,再多学习现有工具,找出合理和不合理的地方。合理的地方,多借鉴。不合理的地方,多多思考,想改进方法。两者齐头并进,才有希望,解决痛点,才能提高效率,让自己走的更远一些。
下面列举几个,我在工作中遇到的痛点。有些我已经解决,有些还在解决的路上。
1. 被测系统与很多第三方系统加密交互,普通mock服务无法解决定制的加密问题。
2. 同样被测系统接入层和外部系统也是加密交互,普通的接口测试工具无法使用。如果只测试内部服务,接口字段过多,或者字段是随机值,使用普通的接口测试工具,构造字段比较繁琐。
3. 测试过程中,需要观察数据库记录变化,如果数据库比较多,如果通过将查询记录,保存在客户端工具中,就会导致记录越来越多,同事也很难被同事复用。
4. 如果业务流程比较长,每次测试后续流程,需要大量的时间去构造数据,再进行测试。