--- title: 系统测试设计方法 date: 2023-04-25 20:00:29.222 updated: 2023-04-25 20:00:29.222 url: /archives/xi-tong-ce-shi-she-ji-fang-fa categories: - 软件测试 tags: - Base --- ## 1.等价类划分 ### 1.1等价类概念 - 等价类 某个输入域的子集合,在这个集合中每一个输入条件都是等效的, 如果其中一个输入不能导致问题 发生,那么集合中其它输入条件进行测试也不可能发现错误 - 有效等价类 合理的输入数据 指满足产品规格说明的输入数据,即有效的、有意义的输入数据所构成的集合。 利用有效等价类, 可以检验程序是否满足规格说明所规定的功能和性能。 - 无效等价类 不合理的输入数据 不满足程序输入要求或者无效的输入数据所构成的集合。 利用无效等价类,可以测试程序的容错性 (对异常输入情况的处理)。 ### 1.2等价类划分方式 **如果输入条件规定了输入值的集合,或者 “必须如何”。 则可以确立一个有效等价类和一个无效等价类。** 注册的时候选择性别,男或女,默认没有选择,性别是必填项 - 有效等价类:男或女 - 无效等价类:不选择 **如果输入条件规定了取值范围,或值的个数, 则可以确立一个有效等价类和两个无效等价类。** 取款金额100到5000 - 有效等价类:100到5000 - 无效等价类:小于100,大于5000 **如果输入条件是一个布尔量, 则可以确定一个有效等价类和一个无效等价类。** 安装软件时必须同意协议才能继续安装 - 有效等价类:同意 - 无效等价类:不同意 **如果规定了的一组输入数据(N个输入值), 且要对每个输入值分别进行处理。 这时可确立N个有效等 价类和一个无效等价类** 考试,>=60分及格,60-70是合格,71-85是良好,86-100优秀 - 有效等价类:60-70,71-85,86-100 - 无效等价类:小于60 **如果规定了输入数据必须遵守的一系列规则, 则可以确立一个有效等价类(符合规则) 和多个无效等价 类(从不同角度违反规则)** 注册的用户名要求必须由英文字母和数字组成,长度3-20之间,不能以数字开头 - 有效等价类:由英文字母和数字组成,长度3-20之间,以英文字母开头 - 无效等价类:包含文字,包含特殊字符(含空格),长度小于3,长度大于20,以数字开头 ### 1.3等价类划分步骤 1. 确定输入框 2. 确定输入条件 3. 划分有效等价类和无效等价类 4. 用测试用例覆盖有效等价类 5. 用测试用例覆盖无效等价类 ### 1.4等价类划分实例 ``` 6~18个字符,可使用字母、数字、下划线,需要以字母开头 ``` | 规则 | 有效等价类 | 无效等价类 | | ---- | --------------------- | ----------------------------------------------------- | | 长度 | 1、6-18个字符 | 2、小于6个字符 3、大于18个字符 | | 组长 | 4、字母、数字、下划线 | 5、包含文字 6、包含特殊字符(包含空格,不包含下划线) | | 开头 | 7、字母 | 8、数字 9、下划线 | | 用例编号 | 覆盖等价类 | 测试输入数据 | | -------- | ---------- | ------------ | | 1 | 1,4,7 | | | 2 | 2,4,7 | | | 3 | 3,4,7 | | | 4 | 1,5,7 | | | 5 | 1,6,7 | | | 6 | 1,4,8 | | | 7 | 1,4,9 | | ​ ### 1.5等价类划分特点 只考虑单个输入的覆盖,不考虑输入的组合 ### 1.6使用场景 单个输入或输出 ## 2.边界值分析 ### 2.1边界值概念 - 指不同等价类之间的边界,**边界值分析法是对等价类划分法的一种补充**,根据经验边界是问题的多发区 - 错误隐藏在角落里,问题聚集在边界上,如果边界附近的取值不会导致程序出错,那么其它取值导致程序错误的可能也很小 ### 2.2边界值的分类 - **上点 边界上的点** 如果域的边界是封闭的,上点就在域范围内 如果域的边界是开放的,上点就在域范围外 范围的边界值一定是上点 - **离点** 离边界最近的点 如果域的边界是封闭的,离点就在域范围外 如果域的边界是开放的,离点就在域范围内 如果某个上点是有效的,离点就是无效的。如果某个上点是无效的,离点就是有效的 - **内点** 区间内除上点和离点之外的任意一个点 > 上点一定是边界上的点,不管封闭区间还是开放区间。 上点和离点在不同的等价类,如果上点是有效等价类,则离点是无效等价类;如果上点是无 效等价类,则离点是有效等价类。 ### 2.3边界值分析步骤 1. 分析输入参数的类型 2. 等价类划分(可选) 3. 确定边界 确定上点、离点、内点 4. 确定测试用例 5. 选择这些上点、离点、内点或者这些点的组合形成测试项 ### 2.4边界值分析实例 **实例演示** 驾照年龄范围18到70 上点:18,70 离点:17,71 内点:20 输入值范围 -3 到 4 ,不含边界,整数 上点:-3,4 离点:-2,3 特殊边界:0 下拉框选择国家,默认请选择,范围从阿富汗到津巴布韦 上点:阿富汗,津巴布韦 离点:请选择 > (6,18)为开区间,不包含6和18 > > 有效值:7~17的数字 > > 无效值:小于等于6,大于等于18的数字 > > 上点:6,18 为无效等价类 > > 离点:7,17 为有效等价类 > > >[6,18]为闭区间,包含6和18 > >有效值:6~18的数字 > >无效值:小于6,大于18 > >上点:6,18 为有效等价类 > >离点:5,19 为无效等价类 ### 2.5边界值分析使用场景 单个输入规定了一个输入范围 单个输入是一个有序的集合(下拉框) ## 3.输入域测试 在等价类划分法和边界值分析法的基础上考虑特殊值测试等其它情况 ### 3.1输入域步骤 1. 等价类划分法 2. 边界值分析 3. 特殊值测试 4. 极限值测试 ### 3.2特殊值测试 日期特殊值 - 2月份的日范围,也数值闰年2月有29天(闰年:能被4整除且不能被100整除;或能被400整除) - 年的表示使用两位数,特殊值是千年虫 - 时间使用时间戳方式保存时,特殊值2038年,最大能表示的日期是2038年1月19日(32位操作系 统的int数据类型最大值是2147483647) 手机号码特殊值 - 110、120、119等紧急号码 - 10086,10000,95555等客服号码 - 虚拟网短号 601 - 13800138000 中国移动充值卡充值中心的号码 ### 3.3极限值测试 某个密码输入框允许最大输入100个字符,密码的最大长度是12 上点是长度12,离点是长度13,极限值考虑长度100 界面长度如果没有限制,可以看数据存储长度进行验证(定义数据类型的可输入最大长度) ### 3.4输入域场景测试 各种单个输入框 ## 4.输出域测试 系统的输入和输出一般不是线性关系,输入域的等价类划分和边界值分析不一定覆盖输出域的等价类和 边界值,需要从输出的测试点考虑输入值。 ### 4.1输出域步骤 1. 从输出角度考虑等价类划分,一般输出没有无效等价类 2. 分析输出等价类的边界值 3. 根据需要覆盖的输出值反推输入值 4. 转化成测试用例 ### 4.2输出域实例 - 外币兑换 输入人民币数值,100到40000。输出美元数值,可以兑换的美元范围100到5000。 输出的有效等价类是100到5000,上点是100和5000。覆盖输出的边界,倒推输入是700和35000 - 个人信息完整显示 注册时填写所有信息项,为了验证每个信息项都能正常展示。 - 查询结果导出时excel每个sheet最大行数为65535 ​ ### 4.3输出域使用场景 格式转换,查询结果导出 - 一般只有当输出比较复杂的时候可能会使用到,实际工作中应用较少。 ## 5.正交实验法 ### 5.1正交实验法概念 - 正交试验设计法,是从大量的试验点中挑选出适量的有代表性的点, 应用依据迦罗瓦理论导出的正 交表,合理地安排试验的一种科学试验设计方法。 - 利用正交表从全排列组合中自动筛选出若干组合进行测试。**任意两个因子的不同状态都同时组合在 一条规则里。** - **原理** 用尽量少的测试用例覆盖输入的两两组合,**如果两两组合没问题,更复杂组合问题不大。** ### 5.2正交表组成 ![正交表](https://images.qweraq.com/images/image-20230421163015522.png) - 因素(因子)Column 输入条件 所有影响实验指标的条件,要测试的功能点,即有哪些输入 - 水平(因子的状态) 输入条件的取值 影响试验因子的状态,即单个因素能够取得的值的最大个数。即输入的取值个数。 - 实验 Experiment Number 因素和水平的组合,对应测试用例 ### 5.3正交实验法步骤 1. 确定要组合的输入 2. 有哪些因子(变量) 3. 每个因子有哪几个状态(变量的取值) 4. 如果因子或状态过多,可以删除一部分重要性较小的因子或状态,使生成的测试用例集缩减到允许范围 5. 选择合适正交表 - 因字数与状态数刚好符合正交表,直接使用 - 因字数与状态数没有符合的正交表 - 合并因子的部分取值匹配正交表 - 选择因字数和水平数略大于实际值的正交表 6. 实际取值替换正交表的状态 7. 展开合并的因子取值,空白处确定具体的值(可选) 8. 把每一行的各因子水平的组合做为一个测试用例 9. 加上你认为可疑且没有在表中出现的组合 ### 5.4正交实验法优缺点 **优点** - 根据正交性从全面试验中挑选出部分有代表性的点进行试验, 这些有代表性的点具备了“均匀分 散,整齐可比”的特点。 - 通过使用正交试验法减少了测试用例,合理地减少测试的工时与费用,提高测试用例的有效性。 - 正交实验法是一种高效率、快速、经济的实验设计方法。 **缺点** - 对每个状态点同等对待,重点不突出,容易造成在用户不常用的功能或场景中, 花费不少时间进行 测试设计与执行,而在重要路径的使用上反而没有重点测试。 - 会存在漏测的风险,生成测试表后需要人工的审核添加一些可疑项 ### 5.5正交实验法使用场景 **组合查询或搜索,兼容性测试(浏览器/操作系统/分辨率),配置测试** ## 6.状态迁移法 ### 6.1状态迁移法概念 有限状态机 - 表示有限个状态以及在这些状态之间转移和动作的数学模型 - 通过构造能导致状态迁移的事件来测试状态之间的转换 ### 6.2状态迁移法步骤 1. 画出状态迁移图 2. 列出状态 - 事件表 3. 画出状态转换树 4. 确定测试路径 5. 针对每条路径设计测试用例 ### 6.3状态迁移法使用场景 有工作状态的软件,修改设置/配置,有状态变化的功能测试 ## 7.流程分析法 ### 7.1流程分析法概念 **流程分析法** 又叫 **场景分析法**,是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例 关注的重点是流程是否能走下去,每个节点的功能并不关注 ### 7.2流程分析法步骤 1. 画出流程图 2. 确定测试路径 - 基本流程 一次性成功的流程 - 备选流程 多次反复后才成功的流程 - 异常流程 失败的流程 3. 针对每条路径至少设计 1 条测试用例 ### 7.3流程分析法使用场景 业务流程测试,安装流程、卸载流程测试 ## 8.判定表法 ### 8.1判定表概念 **判定表** 又叫 **决策表**,是分析和表达多种输入条件下系统执行不同动作的工具。它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。 等价类划分考虑不同的输入,判定表法考虑针对各种输入的**处理规则**是否正确,目的是测试业务规则。 ### 8.2判定表组成 **条件桩** 列出了问题的所有条件(**输入**),次序无关紧要 **条件项** 列出针对它所列条件**(输入)的取值**,即每个条件 **只能取真假两个值** **动作桩** 列出所有输入可能的结果项,这些结果项的排列顺序没有约束 **动作项** 列出在条件项的各种取值情况下应该会有的结果 **规则** 任一条件组合的特定取值和对应的动作,贯穿条件项和动作项的一列 ### 8.3判定表法步骤 1. 确定所有输入(条件)和输出(动作) - 每个输入和输出只能有两种取值 - 有多种取值的每个取值作为一个条件或动作 2. 将所有输入的取值做全排列组合,N个输入有2的N次方列 3. 明确每一列对应的动作,形成各个规则,形成判定表 4. 对判定表进行化简 - 去除无效规则 - 合并相似规则(输出与某个输入的取值无关) 5. 将每条规则转化为用例 ### 判定表法优缺点 **优点** - 把复杂的问题按各种可能的情况一一列举出来,简单而易于理解,也可避免遗漏 **缺点** - 合并存在漏测的风险 原因是虽然某个输入条件在输出接口上是无关的, 但是在软件设计上,内部针对这个条件走了不同 的分支 - 比较繁琐 ### 判定表法使用范围 - 用于复杂的条件组合,并且不同的组合产生不同结果的时候 - 游戏测试