由于项目的需要,花了一个多星期写了一个接口测试框架,之所以自己写是因为对比多种工具多种方法以及结合项目本身需求,考虑到自己写的框架后期写接口测试脚本效率会比较高,加上项目本身时间紧迫也没那么多时间给测试花在写脚本上面,这就要求测试脚本编写速度必须要快,而工具再怎么快也没有写脚本来得快,当然前提是测试需要具备一定的代码能力,否则将是空谈。
由于项目的需要,花了一个多星期写了一个接口测试框架,之所以自己写是因为对比多种工具多种方法以及结合项目本身需求,考虑到自己写的框架后期写接口测试脚本效率会比较高,加上项目本身时间紧迫也没那么多时间给测试花在写脚本上面,这就要求测试脚本编写速度必须要快,而工具再怎么快也没有写脚本来得快,当然前提是测试需要具备一定的代码能力,否则将是空谈。
其实在之前就已经用python写了一个框架出来了,包括接口测试/性能测试/自动化测试都已经集成进去了,但之前一直都没有用起来,后来项目需要的时候由于考虑到一些问题就用Java重写了一个。不过Java毕竟相对python没那么简洁甚至有些东西实现起来繁琐,所以目前也只完成了接口功能测试工具类部分,包括一些公共方法封装、公共工具类以及项目公共配置等。性能测试以及自动化测试暂时还没添加进去,后期有时间会对其进行完善以及改进。
写完后自己用了下感觉效率明显比工具高太多,除了效率高以外,框架的优点就是定制化程度高、可复用性更强、可扩展性更好、也更有利于后期持续集成持续测试;缺点一个是前期基础框架搭建要求测试人员具备开发能力,基础框架没搭建好后期优化和维护成本会很高(以前所在公司就是前期框架没搭建好后期优化到快吐血,后面直接4个测试花了一个月时间测试对框架进行重构,项目情况特殊所以可能花的时间也比较长;一个是写脚本进行测试对功能测试人员的水平要求较高,但想想其实本身接口测试对测试人员的要求就比UI层面的系统测试高,所以既然要做接口测试了,那么何不用一种能让效率有更大提高的方式进行?框架前期的学习成本必然有,包括对测试人员代码水平的要求,其实要求并不会很高起码能看懂一点点就够了,因为肯定会有模板参考,对着模板写熟悉了就好了,包括工具的使用其实也是需要这种学习成本的。况且做接口测试本身就需要测试人员理解什么是接口,接口是怎么一回事,很多测试甚至都搞不清前后端,你问他接口怎么一回事他其实是懵的。
再来说说框架的特点。在对工具和框架同等熟悉的情况下,其效率会比绝大多数工具高很多,相信用过的人都深有体会。而定制化程度高的好处就是有些项目特定的要求都已经在写基础服务的时候做了处理,写测试脚本直接调用就可以了。而用工具除了要对其进行处理外,还得考虑该怎么把这处理完后的结果结合工具进行使用,这就又需要学习成本了,用框架我早就处理好了。可复用性强指的是用例脚本除了可以重复使用(多轮次测试重复使用)还可以很方便地对其进行复用,包括性能测试脚本复用和自动化测试脚本复用(此前的python框架就是这么做的,以前公司项目也是这么做的)。可扩张性强则是可在此基础框架上很方便地添加各种自定义工具以及后期集成性能测试和自动化测试。这也是为什么大多数有接口测试的公司在有资源的前提下都喜欢用自己的框架对接口进行测试。
我想这是很多公司测试团队理想中的模型,但往往由于资源不足、时间问题、成本问题等等导致很难实现这种理想中的模型。资源不足比如测试人员的水平不足以开发测试框架,而如果让开发人员来开发其它他们大多数不了解测试的需求,这种测试工具需求其实也算是做一个产品出来了。解决此资源不足的方法其实要么在公司内部对测试进行技能提升要么直接把测试工具当成产品来让开发做,要么招个测试开发来对此测试工具进行开发和维护,要么就只能去使用开源工具了。资源问题不是问题的情况下,时间问题也是一方面,大多数公司由于成本控制,就导致人员资源只能用于业务本身的工作,开发人员忙于业务开发,测试人员忙于UI层面的系统测试,甚至没有专门的接口测试,更别提花费时间和精力去开发接口测试框架了。成本问题跟资源问题其实是相关的,没有人员资源又想做接口测试,大部分公司都会招拥有此技能水平的测试人员进行推进,而招人是需要成本的,但是往往很多公司不愿意花这个成本,如果有必要做接口测试的话这也会导致一种恶性循环,即需要做接口测试但是又没法做好。
目前测试分为以下几种类型:系统功能测试(UI层面)、接口测试、性能测试、自动化测试,(安全测试/渗透测试),就好比开发有前端开发/后端开发/app开发。而有的测试人员专职于系统功能测试(大多数公司,特别是不成熟的小公司),有的专职于接口测试外加部分系统功能测试(平安科技等大公司),有的专职于性能测试,有的专职于自动化测试(有别于测试开发,其实专职于测试开发的也不应该叫测试了吧),而大多数小公司是没有专职测试岗位的,很多都是从UI层面进行系统功能测试,即使有做接口测试性能测试或自动化测试,几乎都是同一个测试在做。虽然测试有不同的类型,但是一个合格的测试我觉得是需要不断的进行学习了,即使在公司只做系统功能测试,但也应该去学习怎么去做接口测试或性能测试或自动化测试,在项目需要的时候也能应对自如,而不是说不去学就说不会,学了不会是一回事,不学就说不会就是态度问题了。提高自身技能水平其实不管对什么岗位来说都是必要的,除非自己不想竞争过别人。不管是测试还是生活中做其它事情我想都是一样的,只有用心去做好,才能让自己变得更加优秀。