14 篇
欢迎来到 软件测试 专区。
这里记录软件测试相关的实验报告与学习笔记,包括基于 Defects4J 数据集的缺陷分析、JaCoCo 覆盖率评估等内容。
第1章 测试概述 1.1 Fault Error Failure | 概念 | 中文 | 含义 | | ----------- | --------------- | ------------------
第1页 — Test Case Prioritization(测试用例排序) 标题: 测试用例排序(Test Case Prioritization) 第2页 — 测试用例排序(定义) 测试用例排序 给定一个初始测试集 $T_{init}$,找到满足以下条件的排列 $T \in PT$: $$\forall T',\
控制流图 图的形式化定义 一个图 $G$ 定义如下: $$G = (V, E)$$ $V$:有限且非空的顶点集合。 $E$:边的集合,边是顶点对。 $V = {v_1, v_2, v_3, v_4}$ $E = {(v_1, v_2), (v_1, v_3), (v_2, v_4), (v_3, v_4)}$ $V
测试的粒度 单元测试:测试每一个单独的模块。 集成测试:测试模块之间的交互。 系统测试:由开发人员对整个系统进行测试。 验收测试:由客户根据用户需求对系统进行验证,通常没有正式的测试用例。 单元测试 对软件中的基本模块进行测试。 例如: 一个函数 一个类 一个组件 单元测试通常能发现的问题: 局部数据结构问题 算
可达性(Reach):语法可达 vs 语义可达 基础概念:什么是"可达"? 在控制流图(CFG)中,可达性描述的是:从某个节点出发,能不能"走到"另一个节点。 基本定义: 如果存在一条路径从 $v_1$ 开始、到 $v_2$ 结束,则称 $v_1$ 可以到达 $v_2$。 语法可达(Syntactic Reach)
第1页 Test Oracle(测试预言) 第2页 自动驾驶汽车——如何测试? 测试问题: 相同输入,结果可能不同,很难构造测试预言。 汽车因雨中行驶以及太阳方位问题,无法识别路标甚至行人; 摄像头在灰暗天空下无法识别白色汽车; 当公交车汇入车流时,系统误判其会停车。 → 致命碰撞事故 深度神经网络被用于自动驾驶
测试中的默认选项 Default Options in Testing 基础选择 Base Choice 等价划分 Equivalence Partitioning 各输入变量的划分如下: | 输入A | 输入B | 输入C | 输入D | | ----- | ----- | ----- | ----- | | A1
等价类划分 Equivalence Partitioning 等价类划分可以应用于多个测试层级: 单元测试 集成测试 系统测试 无须自动化工具,相对容易应用 可以灵活调整流程,以获得更多或者更少的测试用例。 输入域 程序的输入域包含该程序所有可能的输入 即使是很小的程序,输入域也大到近乎无穷 测试的本质是从输入域中
黑盒测试 Blackbox Testing 随机测试 Random Testing 简单 = 强大 Simple = Powerful 随机不等于免费 Random != Free 随机不等于简单 Random != Simple 随机测试看起来简单,但真正做好并不容易。随机生成测试用例并不是“随便生成”,它仍然需要明
变异测试 Mutation Testing 什么是变异测试 通过创建程序的许多不同版本,将缺陷引入程序中,这些版本被称为变异体。 每个变异体都包含一个单独的缺陷。 测试用例会被同时应用到原始程序和变异程序上。 目标是让变异程序失败,从而证明测试用例的有效性。 变异测试是一种向程序中插入缺陷的方法,用来测试已有测试是否
逻辑覆盖 Logic Coverage 程序中的逻辑 Logic in Program ((x > 5) && (y > 0)) 判定 / 决策 Decision 整个布尔表达式是一个decision 条件 Condition 表达式中的每个基本布尔子表达式是 condition。 判定覆盖 / 决策覆盖 Decisi
数据流覆盖 Data Flow Coverage 数据流 Data Flow 超越结构覆盖 目标: 尽量确保变量的值被正确计算,并且被正确使用。 结构覆盖只关心“程序走没走到某些点或路径”,而数据流覆盖进一步关心“变量的定义和使用之间是否合理”。 Definition / def 变量的值被存入内存的位置。 也就是变量
主路径覆盖 Prime Path Coverage 如果一个图中包含循环,那么它就有无限多条路径。 因此,CPC 不可行。 CPC:Complete Path Coverage,完全路径覆盖。 简单路径 Simple Path 从节点 ni 到节点 nj 的一条路径,如果除了第一个节点和最后一个节点可以相同之外,没有任
软件的特征 Software Characteristics Complexity 复杂性 Evolution 演化性 Artifact, reflecting human intelligence. 软件是一种人工制品,体现了人类智能。 一些事实 The Facts 只有 32% 的软件项目被认为是成功的,也就是功能