SWTBOK测试实践系列(5) -- 项目中使用手动和自动化的策略
2014-06-04 22:07
295 查看
手动测试和自动化测试永远是一个很热门的话题,自动化也一直被人们捧上神坛。自动化测试和手动测试从技术上来说本质其实都是测试用例设计,只不过最终形式一个是人工执行,一个是代码执行罢了。这两者就如白盒测试和黑盒测试一样在项目中都是不可或缺的。
我们来看两个场景。
案例一:某企业招聘软件测试工程师,并组建了各自分工明确的自动化和手动测试部门,在项目中两个测试团队分工明确并互相分享经验,最终项目产品的质量得到了良好的保证。
案例二:小陈同学想应聘软件测试工程师的岗位,投了很多简历之后也得到了若干面试的机会,但在面试过程中却频频因为自己之前都是手动测试而导致失败甚至被别人看不起。经过了一段时间之后,小陈同学也心灰意冷,也开始觉得手动测试就是没有价值的活动。
上面列举的场景在行业中非常常见。那么我们应该如何正确的在项目的测试活动中实施手动测试或自动化测试呢?主要有以下几个因素决定:
1. 回归和探索
我们在项目的测试过程中,回归测试是必不可少的一个环节,它能够使得我们的产品尽量不会出现重复的缺陷。比如测试输入法产品,无论功能和设计如何变化,其基本的字符输入功能总是不会改变的。在长期的项目迭代过程中,测试人员多少都会因为每次验证同样的问题而掉以轻心,同时也浪费了工程师的时间在重复的工作上。
往往这类每个迭代版本都需要验证的重要核心的功能就被贴上了自动化测试的标签。自动化测试既能够节省回归的成本也能够加入持续集成的平台。而每次版本新增的功能的单独模块和集成测试更多的需要手动的探索性测试,手动测试更多的需要基于测试人员对于产品的了解和经验而进行的,一个经验丰富的手动测试工程师能够在短时间内发现很多的功能上的缺陷,这绝对是自动化测试无法达到的高度。
2. 压力测试
测试活动的目的决定了选择手动测试还是自动化测试。就比如压力测试,本身测试的目的在于查看软件功能在被长时间使用之后是否会有内存泄漏、溢出等问题。这类测试活动如果手动来做的话,也许一个测试工程师一天八小时得全部放在这个上面,还未必能够达到测试得效果。所以这类测试就贴上了自动化测试得标签。只要有针对性得编写脚本去不停得使用产品,在自动化测试得过程中可监控功能的异常情况从而获取有效的信息。在这类测试活动中,手动测试是无法正常支持的。
3.场景模拟测试
在测试活动中有很多环境是我们通过手动测试无法覆盖到的。包括方法的各种类型的参数、各种边界的模拟等,这类测试活动就更适合用自动化来做。
在测试过程中,使用技术手段将各种测试环境、配置等进行模拟之后从而弥补手动测试在有限的测试环境中遗漏的测试点。
我们来看两个场景。
案例一:某企业招聘软件测试工程师,并组建了各自分工明确的自动化和手动测试部门,在项目中两个测试团队分工明确并互相分享经验,最终项目产品的质量得到了良好的保证。
案例二:小陈同学想应聘软件测试工程师的岗位,投了很多简历之后也得到了若干面试的机会,但在面试过程中却频频因为自己之前都是手动测试而导致失败甚至被别人看不起。经过了一段时间之后,小陈同学也心灰意冷,也开始觉得手动测试就是没有价值的活动。
上面列举的场景在行业中非常常见。那么我们应该如何正确的在项目的测试活动中实施手动测试或自动化测试呢?主要有以下几个因素决定:
1. 回归和探索
我们在项目的测试过程中,回归测试是必不可少的一个环节,它能够使得我们的产品尽量不会出现重复的缺陷。比如测试输入法产品,无论功能和设计如何变化,其基本的字符输入功能总是不会改变的。在长期的项目迭代过程中,测试人员多少都会因为每次验证同样的问题而掉以轻心,同时也浪费了工程师的时间在重复的工作上。
往往这类每个迭代版本都需要验证的重要核心的功能就被贴上了自动化测试的标签。自动化测试既能够节省回归的成本也能够加入持续集成的平台。而每次版本新增的功能的单独模块和集成测试更多的需要手动的探索性测试,手动测试更多的需要基于测试人员对于产品的了解和经验而进行的,一个经验丰富的手动测试工程师能够在短时间内发现很多的功能上的缺陷,这绝对是自动化测试无法达到的高度。
2. 压力测试
测试活动的目的决定了选择手动测试还是自动化测试。就比如压力测试,本身测试的目的在于查看软件功能在被长时间使用之后是否会有内存泄漏、溢出等问题。这类测试活动如果手动来做的话,也许一个测试工程师一天八小时得全部放在这个上面,还未必能够达到测试得效果。所以这类测试就贴上了自动化测试得标签。只要有针对性得编写脚本去不停得使用产品,在自动化测试得过程中可监控功能的异常情况从而获取有效的信息。在这类测试活动中,手动测试是无法正常支持的。
3.场景模拟测试
在测试活动中有很多环境是我们通过手动测试无法覆盖到的。包括方法的各种类型的参数、各种边界的模拟等,这类测试活动就更适合用自动化来做。
在测试过程中,使用技术手段将各种测试环境、配置等进行模拟之后从而弥补手动测试在有限的测试环境中遗漏的测试点。
相关文章推荐
- SWTBOK測试实践系列(5) -- 项目中使用手动和自己主动化的策略
- SWTBOK测试实践系列(1) -- 测试在项目前期的评审投入划算吗?
- 网管自动化测试项目实践联想(GUI测试框架测试设计思想)
- 自动化测试开发实践系列(二)个人觉得测试开发应该学会拥有的
- 学习实践:使用模式,原则实现一个C++自动化测试程序
- SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)
- 使用nose 进行Python项目的自动化测试
- 自动化测试项目——list的使用
- SWTBOK测试实践系列(3) -- 既然计划永远赶不上变化,我们还要测试计划干嘛?
- SWTBOK测试实践系列(8) -- 测试用例设计难在哪里?
- Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
- [转]Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
- 应用Selenium + NUNIT对动态WEB测试自动化(自动化测试开发实践系列)
- SWTBOK测试实践系列(9) -- 设计的测试用例是否越详细越好?
- 一个项目的自动化测试实践
- 自动化测试开发实践系列(一)个人对测试、质量、竞争的理解
- 使用高速录像机录像,分析录像的自动化性能的测试项目
- 使用Phoenix Framework自动化测试工具开放的接口手动创建用例
- 基于 Laravel 开发博客应用系列 —— 从测试开始(二):使用Gulp实现自动化测试
- 学习实践:使用模式,原则实现一个C++自动化测试程序