自动化测试思考

鉴于之前公司的测试经验,在加入新公司头半个月,Manager让我试着对现有业务建立自动化测试机制。
于是便有了这篇文章,关于如何去做,如何做好自动化测试的思考。

Life is short, 我们直入主题。

了解系统层级,代码层级

作为测试人员,我们首先需要知道系统的层级、架构,或者代码的层级,来规划测试管理方案。
举个例子,作为一个web项目,假如说我们的系统分为WebUI,数据接口,DB。

  • WebUI,即用户在浏览器中操作的可视界面。
  • 数据接口,restful api
  • DB,假如使用大量存储过程的话,我们需要对存储过程进行测试。

测什么,决定哪些层级需要自动化

从黑盒上的角度,我们只测功能,并且对不同层级进行功能测试。

WebUI
  • 手动测试:通过浏览器。
  • 自动化测试:维护代价高,效率一般。通过录制或者攥写脚本,来模拟鼠标点击浏览器窗口,并且验证DOM。
    但维护成本很高,界面改变一个元素属性都有可能要改动,占用人力资源大,并且效率不高,很多UI表现还是需要手动测试。
数据接口
  • 手动测试:利用Fiddler手动发送请求并验证返回结果,很占用时间。
  • 自动化测试:维护代价低,效率高。即通过HttpWebRequest/Response类进行自动化测试并验证,
    搭好框架后开发很迅速一天能开发30-50个自动化用例,并且完全可以代替手动测试,但跑测试的人需要了解一些代码,能分辨出哪些失败结果是BUG,哪些需要维护。
DB

没有这方面实践经验,也不了解有好的方案。

把用例归档起来

抛开自动化,从管理好测试工作来说,我们需要先根据优先级整理出用例,根据用例来实施后期测试和自动化。
针对每个系统层级的功能从100个p1(优先级为1)的用例到整理出p2、p3的用例。
其中比例:P1 20%, p2 30-40%, p3 50-60%

实施

实施是关键,从初始阶段,建议根据现有资源,从一个系统层级测试开始,逐步完善其他层级,我们可以按照以下顺序实施:

  • 让测试人员了解功能及系统使用方法,写出用例。
  • 安排人力编写自动化测试。
  • 版本上线前,对高优先级用例进行手动测试,对所有优先级用例跑自动化测试,对新功能进行手动探索性测试。
  • 报BUG并修复,最好利用缺陷管理工具跟踪(禅道,tfs等),以避免遗漏。

实施过程中需要一个管理人员进行把控,与团队成员协调沟通、统筹工作进度、作决定。