一、测试基础
1. 什么是软件测试
两个依据(需求、测试用例),两个方法(手工、自动),一个对比(预期结果和实际结果的对比)
2. 软件测试的目的、意义:(怎么做好软件测试)
初期: 尽量多的发现缺陷生成相关规范
中期: 尽量早的发现缺陷
后期: 尽量预防问题:通过以往的经验积累
控制成本(贯穿始终)尽量少的时间和人力发现更多的缺陷
3. 软件生命周期
二、测试方法
1. 测试方法对比
| 分类方法 | 测试方法名称 | 依据 | 测试对象 | 理论上的测试目的 | 实际工作中的测试目的 | 测试评估标准 | 测试环境 | 测试工作介入点 | 优点 | 缺点 | 适用范围 |
| 按照不同的测试对象划分(黑白灰盒的区别) | 黑盒 | SRS | 整个软件产品 | 检查软件的功能实现是否与SRS相一致 | 尽早进行验收,收回开发成本 | 需求覆盖率 | 尽量与用户环境相一致 | 只要功能可以进行操作 | 简单,测试效率高 | 1、无法保证所有的代码逻辑都被测试到 2、后台相关的非界面处理可能会遗漏(文件、数据库) 3、当前功能与其他功能有联系的部分可能也会被遗漏 |
适合进行功能、性能等使用和外部特性的测试适用范围广泛,适用所有可见功能 |
| 白盒 | LLD | 代码逻辑函数 | 检查代码的逻辑实现是否与LLD相一致 | 尽早发现问题缺陷,降低缺陷修复成本.便于定位问题 | 逻辑覆盖率 语句覆盖 分支覆盖 条件覆盖 分支-条件覆盖 路径覆盖 |
开发环境 | 只要独立的函数或类代码编写完成后 | 覆盖充分,可以覆盖到每行代码 | 技术较难 效率较低 成本较高 |
针对核心业务、复杂算法、公共模块、全局数据结构、新增功 能 |
|
| 灰盒 | HLD | 模块\子模块接口 | 检查接口实现是否与HLD相一致 | 逐步集成,降低缺陷定位成本 | 接口覆盖率 | 子系统集成尽可能和用户环境一致,模块内部接口以及模块间接口可以在开发环境下进行 子系统间的接口最后要在与用户环境下测试 |
进行测试的接口模块已完成 | 可以提早定位和发现问题 | 技术最难 成本最高 |
公共模块之间的调用,复杂度较高的模块调用、使用频率较高的模块调用 |
| 特点 | 分类 | 优点 | 缺点 | 适用范围 | ||
| 按照是否运行程序划分 | 静态 | 不执行程序 | 1、文档评审 A、正规检视 B、技术评审 C、同行评审 2、静态分析技术 A、控制流分析 可以发现以下缺陷 1、死循环 2、执行不到的语句 3、不存在的语句 B、数据流分析 可以发现以下缺陷 1、变量未定义被使用 2、变量已定义未使用 C、信息流分析 可以帮助开发人员定位缺陷 1、输入变量与语句的关系 2、输出变量与语句的关系 3、输入变量与输出变量的关系 |
较动态测试时间早,不用写代码 | 工作量大 | 重要的功能模块、核心的业务、算法 公共模块 |
| 动态 | 执行程序 | 黑和测试 动态白盒:插装—在代码中加入print打印语句,检查程序的中间运行结果 |
复杂,效率高 | 测试较晚,写代码 | 所有功能 |
| 优点 | 缺点 | 适用范围 | ||
| 按照不同的测试手段划分 | 手工 | 能够主动的发现bug | 重复工作量大,容易引入疲劳缺陷,只能依靠见到的界面 | 绝大多数的场合 |
| 自动化 | 可以无限制不断重复,把人从劳动里解放出来,提高劳动效率,提高了测试质量,能发现人不能发现的错误 | 无法发现脚本中未写明的缺陷 | GUI界面稳定 回归阶段 需求稳定且功能已实现时才进行脚本的编写 性能测试工具:提取相关的系统数据,构造并发用户 |
三、测试组合
| 测试方法组合 | 典型案例 | 使用时机 | 特点 | |
| 黑盒 | ||||
| 黑盒静态手工 | ||||
| 黑盒静态自动化 | ||||
| 黑盒动态手工 | ||||
| 黑盒动态自动化功能测试 | Mercury的QTP:用于检测应用程序是否能够达到预期的功能及正常运行 | 通过自动录制、检测和回放用户的应用操作 | 1、能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试 2、提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行 |
|
| IBM Rational Robot 是功能测试工具 | 它集成在测试人员的桌面 IBM Rational TestManager 上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 | |||
| Borland SilkTest属于软件功能测试工具 | 是Borland公司所提出软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。 | |||
| 基于Java语言的功能和性能测试工具 | JMeter是Apache组织的开放源代码项目 | 主要针对Java语言 | 它是功能和性能测试的工具,100%的用java实现 | |
| 黑盒动态自动化性能测试 | Mercury的LoadRunner:是一种预测系统行为和性能的负载测试工具。 | 通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题 | 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 | |
| Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。 | 功能强大的压力测试工具 | 您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响 | ||
| webload是RadView公司推出的一个性能测试和分析工具 | 它让web应用程序开发者自动执行压力测试; | webload通过模拟真实用户的操作,生成压力负载来测试web的性能。 | ||
| 白盒 | ||||
| 白盒静态手工 | ||||
| 白盒静态自动化 | 检查语法规范、语法逻辑 | |||
| 白盒动态手工 | 目前的最流行的单元测试工具是xUnit系列框架 | 常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit(Delphi ),NUnit(.net),PhpUnit(Php )等等。 | 该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit。 | |
| 白盒动态自动化 | Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具 | |||
| 灰盒 | ||||
| 灰盒静态手工 | ||||
| 灰盒静态自动化 | ||||
| 灰盒动态手工 | ||||
| 灰盒动态自动化 | BMC的APPSight | 系统会将问题发生的相关信息完整录制下来,包括问题发生的现场场景、信息及分析等,从而快速切入到问题根源 | ||
| 测试管理工具 | 是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。 | |||
1. 自动化测试就是用程序驱动程序的测试
2. 黑白灰测试的区别
测试的对象不一样,对于代码实现逻辑程度不一样(黑盒不需要了解代码实现,白盒需要完全了解代码实现,灰盒需要部分了解代码实现)
3. 静态与动态测试的区别
被测程序执行与否 静态不执行程序包括文档评审静态分析技术代码走读,动态包括黑盒测试和动态分析技术
4. 自动化合手工测试的不同
测试手段不同