1、生命周期各测试方法的对比
单元测试 | 集成测试 | 冒烟测试 | 系统测试 | 验收测试 | |
测试阶段 | 编码后 | 单元测试完成后 | 提测后 | 冒烟测试完成后 | 发布前 |
测试对象 | 最小模块 | 模块间的接口 | 整个系统 | 整个系统 | 整个系统 |
测试人员 | 白盒测试或者开发 | 白盒测试或者开发 | 黑盒测试 | 黑盒测试 | 最终用户或需求方 |
测试依据 | 代码,注释、详细设计文档 | 单元测试模块、概要设计文档 | 冒烟测试用例 | 需求说明文档、测试方案、测试用例 | 用户需求、验收标准 |
测试方法 | 白盒测试 | 黑盒和白盒相结合 | 黑盒测试(手工或者自动化相结合) | 黑盒测试 | 黑盒测试 |
2、常用术语
- C/S :client(客户端)、sever(服务器端)
- B/S: Browser(浏览器端)、sever(服务器端)
- 缺陷(BUG/Defect)软件中(程序和文档)不符合用户需求的问题
- 测试环境:软件运行的平台,包括软件、硬件和网络的集合。测试环境= 软件+硬件+网络
- 测试用例(test case):测试之前设计的一套详细的测试方案包括测试环境、测试步骤、测试数据以及预期结果。测试用例=输入+输出+测试环境
- 冒烟测试(smoke testing):在对一个新版本进行系统大规模测试前,先验证一下软件的基本功能是否实现,是否具有可测性。
- α测试:验收测试的一种,指的是用户测试人员、开发人员共同参与的内部测试。
- β测试:验收测试的一种,指的是内侧之后的公测。即完全交给最终用户测试。
3、常用模型
V模型:瀑布模型的改进,(瀑布模型早期的错误可能到开发后期才能发现)在这点上改进,在软件开发生存期,开发活动和测试活动几乎同时开始,这两个并发的动态的过程就会极大减少bug和error的出现率。
W模型:一些高性能、高风险的软件系统雄一个系统难以被具体模块化的时候比较难做成V模式所需的各种构件,需要更强调迭代的开发模型或敏捷开发模型。
其他模型——H模型:真正测试级别之间不存在严格的次序关系、各阶段间可以反复触发、迭代、增量。
x模型: 定位了探索类型的测试。
4、软件测试覆盖率
- 覆盖率:用来度量测试完整性的一个手段,同时也是测试技术有效性的度量。覆盖率=(至少被执行一次的item数)/item的总数。
- 特点: (1)通过覆盖率数据可以检测我们的测试是否充分。(2)分析出测试的弱点在哪个方面。(3)知道设计能够增加覆盖率的测试用例,但不能一味追求覆盖率,测试成本随覆盖率增加而增加。
- 对黑盒来说:需求覆盖、用例覆盖。
需求覆盖=(被验证的需求数量)/(总的需求数)
用例覆盖=(验证通过的用例)/(总的用例总数)
5、团队的组织架构:金字塔模式、矩阵化管理模式。
6、软件测试原则
- 所有的测试都应追溯到用户需求。
- 尽早启动测试工作
- Pareto法则应用于软件测试(帕累托法则又称28效率法则)
- 穷尽测试时不可能的
- 杀虫剂怪事(软件测试必须从不从的角度 不同部分找出软件的缺陷)
- 前进两步后退一步(缺陷修复会引入新的缺陷)
- 三心二意(细心、信心、耐心,团队合作意识,时刻保持怀疑态度)
7、软件测试规范:ISO9000/CMM
8、介绍一个项目的周期。
9、阿里系开发模型变迁史: 最早期:边做边改——稳定期:瀑布式——发展期:敏捷——创新期:Devops
10 、测试覆盖率的运用:
- 简单的测试覆盖率:本次测试执行的用例数、所有用例数(大型系统) 审核:抽样验收
- 基于产品的测试覆盖率:100% 已测需求点/设计所有需求。 审核:抽样验收
- 基于白盒的测试覆盖率:大多工具判断测试语句覆盖,即单元测试代码行/总代码行 80%+ 缺陷:代表测试过哪些数据,不能代表是否测试好这些代码。容易遗漏逻辑判断等场景。
- 基于自动化的测试覆盖率:自动化覆盖的测试场景 80/20原则 用途:自动化测试更重于回归验证。考虑用例设计没必要追求过高的覆盖率
11、测试人员知识体系: