测试理论
软件测试目的及原则
- 用最少的人力、物力、财力,找到软件中的问题并修复,从而降低商业风险
软件测试原则
- 只能证明软件存在问题,不能证明不存在问题
- 应该分类别测试,不能穷举测试
- 测试工作要尽早的介入,降低修复成本
- 缺陷存在集群现象,二八原则:20%的模块中存在80%的缺陷
- 测试依赖环境(系统、浏览器)
- 杀虫剂现象
- 不存在缺陷谬论
软件测试分类
按测试阶段划分
- 单元测试
又称模块测试,针对软件设计中的最小单位-程序模块,进行正确性检查的测试工作。单元测试需要从程序内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试单元定义:Python中指一个类
- 集成测试
又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试
- 系统测试
指的是将整个软件系统看为一个整体进行测试,测试的依据是软件需求说明书
- 验收测试
检验软件是否符合用户需求的测试
- α测试
Alpha 是内测版本,通常只在软件开发者内部交流,一般而言, 该版本软件的bug较多,普通用户最好不要安装
- β测试
Beta是公测版本,是对所有用户开放的测试版本,这一版本通常由软件公司免费发布, 用户可从相关的站点下载,通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改
- γ测试
Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本
按是否查看源代码
- 黑盒测试
又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据
- 白盒测试
指的是把盒子打开,去研究里面的源代码和程序结构
- 灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,不仅关注输出、输入的正确性,同时也关注程序内部的情况
按是否运行分类
- 静态测试
指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程
- 动态测试
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程
按照是否自动化
- 功能测试
也叫做手工测试,测试人员手动去进行的测试
- 自动化测试
利用代码或者工具帮助人工进行测试
软件测试的更多分类
- 冒烟测试
冒烟测试就是对系统进行最基本功能的测试,保证基本的功能和流程能走通
- 回归测试
当修复一个BUG后,把之前的测试用例在新的代码下进行再次测试
- 随机测试
随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分
- 探索性测试
探索性测试意味着同时设计测试和执行测试。测试人员通过测试来不断学习被测系统
软件开发过程模型
瀑布模型
- 线性模型,在所有的开发模型中占有重要地位,是其他模型的基础
- 以文档驱动,每个阶段执行一次,按线性顺序进行软件开发
- 优点
- 开发的各个阶段比较清晰
- 当前阶段完成后,只关注后续阶段
- 缺点
- 依赖于需求分析,不适应需求的变化
- 风险往往在后期显露,失去及早纠错的机会
软件测试过程模型
V模型
- V模型具有代表意义的模型,最早由Paul Rook在20世纪80年代后期提出,由英国国家计算机中心发布
- V模型是瀑布模型的变种,反映测试活动与需求分析、产品设计之间的关系
- V模型从左到右,描述了开发与测试过程之间的阶段对应关系
- 优点:展示测试由底层(代码)到高层(用户业务)按阶段测试的实现过程
- 缺点:不适用于需求变化,灵活性差
W模型
- W模型,简称双V模型,即以开发主导的一个v,和以测试主导的另一个v
- 为了克服V模型的缺点,引入了W模型
优点
- 测试伴随整个产品开发周期,测试对象不仅是程序还有需求、设计文档
- 测试介入较早,及早发现问题,降低修复成本
缺点
- 实施起来比较复杂,难度大,对于需求阶段和设计阶段的测试设计要求较高(计算机技术、业务知识、管理能力、测试素质等)
软件缺陷
- 是指软件或程序中存在的各种问题及错误。软件缺陷的存在会导致软件产品在某种程度上不能满足用户的需求
软件缺陷的判定标准
- 软件未达到需求规格说明书中标明的功能
- 软件出现了需求规格说明书指明不会出现错误的地方
- 软件的功能超出了需求规格说明书指明的范围
- 软件未达到需求规格说明书虽未指明但应该达到的目标
- 软件测试人员认为软件难以理解,不易使用,运行速度慢,或者最终用户体验不好
软件缺陷产生的原因
软件缺陷产生是不可避免的,造成软件缺陷产生的原因主要归纳如下
- 需求解释、记录或者定义错误
- 设计文档说明存在错误或者拼写错误
- 编码说明、程序代码有误
- 硬件或者软件系统上存在错误
软件缺陷的类型
- 功能错误
- 界面错误
- 兼容性缺陷
- 易用性问题
- 改进建议
测试用例
- (Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期结果的文档。
买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例!
- 买手机:按开机键,相当于输入了一组数据来测试,执行条件指的是开机的前提条件,比如是否有电;预期结果就是能顺利打开手机,那么测试完毕后,是否达到了想要的需求(顺利开机)
测试用例组成要素与用例模板
- ID
- 唯一性
- 项目-模块-001
- 模块
- 优先级
- 作用:体现用例执行的先后顺序
- 分类:
- 高
- 中
- 低
- 用例标题
- 唯一性
- 见名知意
- 预置条件
- 测试步骤
- 尽可能详细
- 测试数据
- 预期结果
软件测试用例的作用
- 便于理清测试思路,确保需覆盖测试的功能点无遗漏
- 便于测试工作量的评估
- 便于提前准备测试数据
- 便于把控测试工作进度
- 便于回归测试
- 便于测试工作的组织,提高测试效率,降低测试交接成本
0 条评论