关于自动化测试的疑问点都在这了
前面学到的持续集成,有一个基础技术是自动化测试。只有测试通过,才能完成集成;而自动化地进行测试,则保证了持续的可操作性。这是针对代码部分。也有针对项目的,比如单元测试、各种回归测试之类。本文说的是项目部分的自动化测试。
1、什么是自动化测试?
自动化测试,顾名思义,自动完成测试工作。通过一些自动化测试工具或自己造轮子实现模拟之前人工点点/写写的工作并验证其结果完成整个测试过程,这样的测试过程,便是自动化测试。
2、如何进行自动化测试?
自动化测试覆盖的范围很广:单元测试、集成测试、接口测试,GUI测试等等都可以实现自动化执行;同时,不同的系统情况是不一样,有的适合或是可以做GUI的自动化测试,有的可能只适合做接口的自动化测试,所以需要针对不同的被测项目,考虑具体在哪一个环节作自动化测试。
比如说针对搜索引擎,前端往往比较简单,只是一个文本框和提交按钮,大部分的逻辑处理都是在后端完成的,这种情况做自动化的接口测试就可以达到事半功倍的效果;如果是被测系统有很多的页面操作,那么可以考虑GUI的自动化测试;以上这两种情况都不是绝对的,如果测试资源足够,那么在各个环节都是可以开展自动化测试的。
此外,还有一点需要考虑的是自动化测试的可行性,比如说对一个系统而言,做GUI测试是最合适的,也是最有效,但是有可能通过各种工具或者是脚本很难实现GUI的自动化测试,那么就需要考虑变通,考虑是否可以将自动化测试调整到接口测试或是集成测试等环节。
实施方式,一般是采用相关工具。
3、为什么要自动化测试?
1) 自动化测试节约成本(根据项目)
毕竟自动化测试确实解放了一批人力(人力成本才是IT公司最大的成本),可以让机器没日没夜的执行一些重复劳动.
2)有些测试项目手工很难实现(手工成本较高)
比如12306的压力测试、负载测试,同时找那么多人去测试不现实可以通过机器去模拟.
3)项目质量流程需要 比如版本管理需要build verify,以保证check in的code不会影响版本库。类似于smoke test
4、自动化测试的优缺点
1)优点
避免测试人员因重复劳动产生厌倦
提高测试效率
保证每次测试地一致性和可重复性
更好的利用无人值守时间
进行一些手工无法进行的测试
维护成本相对比较高
2)缺点
系统开发时间不一定能缩短
没有手工测试发现缺陷多
UI layout issue 不容易发现
5、什么样的项目适合应用自动化测试
有以下几个特点的项目比较适合自动化测试(这里说的自动化测试,是针对项目的单元测试、各种回归测试。至于对代码的持续集成的自动化测试,则任何项目都应该有):
1) 项目变动少
2) 周期长
3)项目资源足够(自动化不是一个人完成的,需要一帮人长期维护)
自动化测试并非只是做与不做这么简单,而是需要考虑成本投入与效果产出。不管是做软件、做系统、还是做网站,最终的目的基本上都是要盈利的,要盈利就必须控制成本,提高利润。所以在测试工作中也必须考虑到成本投入。如何确定系统是否适合做自动化测试呢?有人认为主要考虑当前的被测项目是长期的还是短期?如果被测项目是在今后半年或者几年间要不断进行开发维护的,那么就需要重复的进行大量的回归测试,这种情况下如果有自动化的回归测试体系就可以节省成本投入;如果被测项目是短期的,比如说一个月,或几个月,同时如果开发自动化测试又不是很容易,也没有足够的时间去做这件事,那么就完全没有必要作自动化测试,费尽力气做出的自动化测试脚本,可能只会用到一次或两次,这样就很不值得。
举例说明:
互联网项目,一周内要上线,你不上线别人上线人家就不用你的,项目周期短,变动快,你自动化还没做好,项目说不定就下线了。比如某宝双12活动相关项目,一周之内就下线了。 适合做自动化测试的项目,比如某宝客户端,每个release,大部分功能都不变,并且3-5年内项目不会下线,这个就比较适合自动化。
1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;
2、关注我。让我们成为长期关系,下一个视频会分享更多的硬核干货;
3、本文章学习资源,均可以免费分享。