自动化测试理论
需求:
为什么搞自动化测试
1.重复性劳作太多,技术越来越通用
2.面临的挑战越来越大,技术越来越多,复杂性也随之而来
3.产品更新快,产品的版本迭代快,因为模块化程度高了,增加了模块(接口)
4.涉及的领域越来越广
5.提高效率,节约成本
自动化用在哪?哪个阶段
1.版本接受测试(转测)
2.回归测试
3.冒烟测试(小部分主要业务和回归测试相似,版本迭代后和上线前测试,测试时间短)
4.人工不易做的事情(性能测试,兼容性测试,接口并发测试)
5.环境的准备
6.测试数据准备
自动化测试的优点和缺点
1.优点
-
提高效率,节约人力,提高资源利用率,节约时间
-
避免测试人员因为情绪,重复工作产生厌倦或者逃避的状态
-
保证每次测试的一致性和可重复性
-
更好的利用无人值守的时间
-
一套代码,重复利用
2.缺点
- 不能发现较多的bug,不要指望自动化去发现bug
- 开发维护的成本较高(开发时间长,环境因素影响大,缺陷修复,功能的添加)
自动化测试的核心要素
1.场景/功能的测试的操作步骤和期望结果
2.自动化操作和调用被测对象来驱动测试执行
3.将实际结果和期望结果进行对比,最终写入报告
自动化测试的技术类别
1.代码级自动化测试 - 单元测试(代码逻辑)、白盒测试(模块间逻辑),代码来完成测试
2.协议级自动化测试 - 重点是服务与服务之间,模块与模块之间,接口与接口之间,通过什么协议进行数据的交互
3.界面级自动化测试 - 页面功能展开(元素,控件)
自动化测试的实施过程
1.分析 - 需求分析(1.将哪些功能转化自动化测试,(从手工测试用例转化;重新写用例)2.哪些业务方面)
环境分析、团队分析(技能、人员、愿望)、投入产出分析、工具与技术分析(什么工具,技术体系)
风险分析、产品分析(适不适合)
2.设计 - (框架(模块化、分层、参数化、设计模式),结构,架构,算法)
用例:业务场景,手工转化成自动化测试用例
规范:命名规范,调用规范,流程规范(代码拉取,构造顺序)
3.实现 - 编写测试用例(python,工具生成的用例)
4.执行
5.维护 - (bug修复,添加新功能,环境因素)
什么项目适合自动化测试
功能成熟(产品稳定,功能稳定)、周期长、可测性强
怎么才能做好自动化测试
1.工具要熟悉 - 个人技能
2.技术框架熟悉 - 个人技能
3.项目熟悉(业务熟悉,业务理解,逻辑,流程)
4.手工测试(1.业务 2.一定测试经验)
5.编程能力
6.遇到问题分析问题和解决问题能力
自动化测试与手工测试的关系
1.相辅相成,彼此不可替代
2.手工测试是为了发现产品各方面的bug(用户体验,稳定性,易用性),自动化测试不是为了发现bug,而是为了确保做了该做的事情,正确的事情做正确了,增强对产品的自信心
3.手工测试稳定了,就可以添加到自动化测试