手动测试与自动化测试:
手工测试
依据测试用例,依次对产品进行输入等操作并进行实际结果与期望结果对比的测试手段。测试人员需要具备手工测试过程中发现缺陷的基本技能。测试人员素质以及其他不确定因素会影响手工测试结果,导致差错率的发生。
自动化测试
把人为驱动的测试过程转变为机器执行的一种过程,避免操作过程中人为的疏忽和错误。
什么是测试框架?
定义:
由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。
优势:
1.减少冗余代码
2.提高软件代码质量
3.提升系统的可信度
自动化测试工具选型:
关键要素
1.对不同类型的应用程序和平台的支持
2.对不同类型的操作系统的支持
3.对不同测试类型的支持
4.脚本语言、编辑器和调试器
5.录制测试脚本的能力
6.应对变化的能力
7.对控件和对象的支持
8.支持不同渠道的测试数据
9.运行测试与测试对象的同步
10.检查点
11.测试结果记录和导出报告
12.扩展性
13.测试多语言应用程序的能力
14.对团队协作和代码管理的支持
15.与团队协作系统以及软件构件系统的整合
16.技术支持
17.价格/试用版
自动化测试的发展:
- 简单的录制回放——测试数据和执行脚本混杂在一起,复用性低,维护成本高,受界面影响大。
- 数据驱动——从数据文件读取测试数据,通过变量参数化,将测试数据传入测试脚本,可维护性高,受界面影响大。
- 关键字驱动——是数据驱动的一种改进类型,将测试逻辑按照关键字进行分解,封装在数据文件中,关键字对应封装的逻辑。主要关键字包括被操作对象(Item)、操作(Operation)和值(Value),用面向对象的形式可表表现成Item.Operation(Value),脚本与数据分离、界面元素与测试内部对象分离、测试描述与具体实现分离。
- 其他——如基于模型驱动、行为驱动等(详情待续)
总结
自动化测试框架的发展与软件工程的理念是一脉相承的,软件开发经历了面向机器、面向过程、面向对象、面向服务,是一个从底层到高层、从具体到抽象、复用粒度从细到粗的过程。软件开发中的模块化、层次化、松耦合等思想对自动化测试框架的架构与设计具有极大的借鉴意义。
自动化测试的流程:
1. 创建以及更新测试用例文档
自动化测试用例源于手工测试用例,在进行手工用例测试用例设计之时候,需要标注是否适合自动化测试。在开发自动化脚本之前,将美一步手工测试的步骤和验证点设计为自动化测试用例文档,可以做自动化测试用例的存档和记录,也便于自动化脚本开发人员开发出和文档一致的手工测试用例一致的脚本。
2. 测试框架设计
是自动化测试开发过程中最重要的环节,框架需要具备健壮性、可复用性、通用性、可扩展性,以便于需求变更时对测试框架或测试脚本做少量修改即可。同时测试框架还要考虑到一些公用组件,例如日志引擎、异常处理等。
3. 测试脚本开发
测试脚本是基于测试框架,完成产品具体测试用例的代码或脚本。要注意脚本之间的独立性,同时也要考虑到脏数据的清除和环境的重置。
4. 自动化用例执行
可以结合持续集成机制、等待系统或产品环境部署完毕,做相应的自动化回归,执行完毕,将相应的日志发送给相应的人员。
5. 脚本维护
产品需求变更,自动化脚本应做相应的修改,维护周期视情况而定。
自动化测试的优缺点分析:
优点
1. 缩短测试时间
2. 结果准确,无人为误差或错误
3.能模拟手动测试难以提供的测试数据
4.释放测试人员资源
5. 自动化测试更适用于模块界面变化不大、软件生命周期长,经常推出新版本、软件开发基本完成,用于测试升级版本等
缺点
1.自动化测试适合软件后期的回归测试、性能测试、压力测试等,手动测试具有足够的想象力,具备一定的偶然性,更容易发现缺陷
2.自动化测试不适合界面变动频繁的产品,开发人员频繁的变动会导致自动化脚本维护成本的直线上升
3.自动化测试很难发现新的缺陷
测试工具分类
根据测试方法不同——白盒测试工具、 黑盒测试工具
根据测试阶段和测试目的——单元测试工具、功能测试工具、性能测试工具、 压力测试工具、回归测试工具
根据测试对象的不同——Web测试工具、数据库测试工具、 嵌入式测试工具、测试管理工具等
自动化测试的维护成本
产品——测试产品的生命周期和变更情况
脚本——测试脚本本身的可维护性和健壮性
框架——测试框架的可靠性
在进行自动化测试用例设计过程中需要考虑到以下几个方面:
测试功能原子性
每个测试脚本要做到功能单一,但是可以将一组测试的同一功能模块的测试脚本设计到一个测试项目中去,便于管理减少脚本依赖性
脚本与脚本之间,要减少相互依赖,一个脚本具有自己的生命周期、独立的测试数据和数据清理使用数据驱动
测试脚本的大忌就是Hard Code。比如用户登录功能login(String username, String password),假如有100个测试脚本都用到这个登录功能,如果环境变化,比如用户密码变更了,那需要修改100个脚本,但是如果写到测试数据文件中,我们仅需要修改下这个测试数据文件即可
未来的发展方向:
采用标准化架构
随着企业产品线的日益膨胀,不可避免各自为政的情况,不同产品的测试人员独立选取自动化测试工具,开发一套仅适用于本产品的测试框架和测试脚本,从一个公司的产品线整体考虑,测试人员实际执行了大量别人已经做过的重复工作。因此,采用一套标准化架构开发的通用测试平台是行之有效的方法,可以提升测试方面的资源复用。
1.测试环境搭建:基本平台搭建、中间件等基本软件安装
2.测试环境配置:测试产品安装、测试产品配置和调试
3.测试数据准备:批量进行环境初始化所需要的测试数据
4.执行测试:执行调度并运行测试用例
5.测试结果分析与报告:系统监控、收集测试结果、失败用例重新执行、失败信息分类和分析、缺陷提交、测试报告生成、结果评估、产品升级更新等提高自动化测试覆盖率
提高自动化测试覆盖率是是自动化测试开展的中后期有待解决的问题,寻求产品中可能的测试点,改善产品的可测性,进而为应用建立更多的不同的自动化测试。培训与分享
自动化测试国内开展时间不长,缺乏规范的体系和教材,往往是老员工对新员工进行短期培训,剩下的工作靠新员工摸索和实践。随着自动化测试的发展,培训力度的提升以及知识分享显得日益重要。