首页 > 其他分享 >测试环境使用问题及其优化对策实践

测试环境使用问题及其优化对策实践

时间:2024-07-21 14:26:28浏览次数:13  
标签:边界值 等价 测试用例 输入 测试 设计 优化 测试环境 对策

1 背景及问题

G.J.Myers在<软件测试技巧>中提出:测试是为了寻找错误而运行程序的过程,一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试, 一个成功的测试是揭示了迄今为止尚未发现的错误的测试。

对于新手来说,日常测试用例设计时,很少用到系统的方法论,大多是根据产品需求文档或自己的主观判断直接进行测试用例的编写,经常会造成漏测等严重问题。所以,使用方法论支撑测试用例设计的过程,使其更加合理化、规范化,是一件至关重要的事情。但测试用例设计方法种类繁多,适用场景也各不相同,针对具体需求层面进行测试用例编写时,很难选取合适的方法来进行设计。

2 目标及意义

质量管理领域权威人物J.M.Juran将质量定义为“决定产品性能”和‘“满意程度’的特征”, 而测试注重于产品的满意度。 测试用例设计的过程是将产品需求转化为一种可操作性的步骤,在整个产品生命周期中发挥着至关重要的作用,基于方法论的规范化用例设计,能帮助测试人员拓展测试范围,完善测试覆盖面,降低漏测率,提升产品满意度。

本系列文章对经典的测试用例设计方法逐个进行剖析,并深入到日常工作的实际需求中,结合具体场景进行实战演练,并分别对各类方法的适用场景进行归纳梳理,形成可复用系统模板,帮助大家快速熟悉常用测试用例设计方法,提升测试人员专业度及工作效率,从而提升交付质量。

3 初探

说到测试用例设计方法,大家最容易想到的肯定是等价类和边界值法,所以,首先,我们将对这两种测试用例设计方法进行介绍。

3.1 等价类划分法

3.1.1 概念及原理

1.定义

  • 等价类:某个输入域的子集合
  • 等价类划分:有效等价类(合理的、有意义的输入集合)
  • 无效等价类(不合理的 or 无意义的输入集合)

2. 基本思想

设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

3.1.2 方法步骤
  1. 根据需求,大体上可以先划分为有效和无效两种
  2. 然后再细化相应的等价类(从组合情况进行细化)
  3. 建立等价类表
  4. 生成测试用例
3.1.3 举个栗子

场景:一个输入框的输入规则为1~12位字母和数字组合

根据等价类划分法,具体可建立等价类表如下(把输入拆分成长度和符号组合两种),即可得到用例

划分有效等价类编号无效等价类编号
长度[1,12](1)0(2)
--(12,+∞)(3)
符号a(4)数字+其它字符(5)
--其它字符(6)

3.2 边界值分析法

3.2.1 概念及原理

1.定义

是等价类划分的一个补充方法,将等价类划分的边界作为用例设计(在有效和无效等价类的边界取值中,会存在值重复的情况,可按有效无效进行取舍)。

2. 基本思想

大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部,所以为了保证测试质量,就需要重点测试边界,就有了边界值这样的测试方法。

3. 等价类和边界值的关系

  • 边界值分析法是作为对等价类划分法的补充,边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
  • 边界值数据本质上是属于某个等价类的范围,测试时有时是一种冗余(正好等于,刚刚大于或刚刚小于边界的值),但是为了更好的测试质量,边界值必须要单独进行测试,适当必要的冗余是可以接受的。

4. 使用方法

那我们怎么去找边界值呢?一般会关注以下几个点:

  • 上点:区间的端点值
  • 内点:上点之间任意一点
  • 离点:若是开区间的离点,就是开区间中上点内侧紧邻的点;若是闭区间的离点,就是闭区间中上点外侧紧邻的点

① 闭区间

② 半开半闭区间

③ 开区间

3.2.2 举个栗子

场景:一个输入框的输入规则为1~12位字母和数字组合

具体可建立等价类表如下(把输入拆分成长度和符号组合两种)

根据边界值法,按照闭区间[1, 12]确定上点(1,12)、内点(2)、离点(0,13),建立等价类和边界值表如下(把输入拆分成长度和符号组合两种),即可得到用例。

划分有效等价类边界值无效等价类边界值
长度[1,12]1,2,11,1200
--(12,+∞)13
符号a数字+其它字符
--其它字符

3.3 测试设计——“等价类+边界值”

3.3.1 举个栗子

场景:手机号兼容座机号的格式校验

  • 有横杠:XXX(3位或4位)-XXXXXXXX(7或8位):3+7或者3+8或者4+7或者4+8
  • 有横杠有分机号:XXX(3位或4位)-XXXXXXXX(7或8位)-XXX(1-5位)
  • 无横杠:XXX(3位或4位)XXXXXXXX(7或8位) 11位-17位
  • 取消第一位必须为”1“,且取消第二位必须为“除0,1,2”限制。

设计步骤:

1.等价类划分:以第一条为例-有横杠:XXX(3位或4位)-XXXXXXXX(7或8位)

根据等价类划分法的步骤,首先进行拆分第一部分和第二部分,获得第一部分的有效等价类[3, 4]和无效等价类(len>4 & 0<len<3);获得第二部分的有效等价类[7,8]和无效等价类(len>8 & 0<len<7)。以此类推,获取所有的有效和无效等价类。

2. 边界值分析:根据区间开闭性,定位上点、内点、离点。

如:有效等价类[3, 4]的上点为3和4,无效等价类(len>4 & 0<len<3)的离点为5和2,内点无。

3. 数据处理:按照步骤1和2及数据的组合情况,列出所有的情况。

4. 整理最终用例:根据步骤3得到的数据,按照要求设计测试数据及相应的预期结果,得到最终测试用例。

4 总结

方法等价类划分法边界值分析法
核心“分类”及代表值边界值和边界两边的邻值
优点通过把输入数据和输出数据进行分类,选用分类中的代表值,在保证了测试覆盖的情况下大大减少了测试用例的数量,使测试工作变得简单高效大量的程序错误发生在输入的边界上,考虑了边界值的测试用例能更高效发现程序中的错误和缺陷
缺点输入与输入之间的关系考虑少,可能产生一些逻辑错误。还需要其他用例设计方法来补充测试只能作为一个对其他设计方法的补充;这种方法表面上听起来简单,但有的边界值非常微妙,不容易确定下来;只适用于多个变量相互独立又都代表实际物理量的情况,对变量之间的依赖关系则考虑不到。
适用场景有数据输入(编辑框)的地方,可以使用等价类划分法。例如:用户登录、注册、新建、查询有数据输入且存在取值边界或长度边界时,边界值法往往跟等价类划分法一起使用,从而形成一套较为完善的测试方案。

等价类划分和边界值分析法只考虑了单个的输入条件,在输入条件有各种组合、输入条件之间的相互制约关系的场景中很难发挥有效作用,这个时候就需要因果图与判定表法来帮助我们设计测试用例了,让我们一起来看看吧~

标签:边界值,等价,测试用例,输入,测试,设计,优化,测试环境,对策
From: https://blog.csdn.net/xiao1542/article/details/140587748

相关文章

  • Android Studio项目中的重复类、动态版本控制及其他优化方法
    本文介绍在Android开发过程中,我们常常会遇到一些棘手的问题,如重复类冲突、动态版本控制及依赖打包等。本文将介绍如何解决这些问题,并提供一些有用的优化方法。1.解决重复类冲突问题在引入多个JAR包或AAR包时,可能会遇到类重复的问题,导致编译失败。这里提供了两种解决方......
  • 线段树优化建图
    首先看这个问题:一张\(N\)个点的有向图,初始没有任何边,有\(M\)次操作:建\(1\)条边\(u\rightarrowv\),边权为\(w\)。建\(r-l+1\)条边\(u\rightarrow\foralli\in[l,r]\),边权为\(w\)。建\(r-l+1\)条边\(\foralli\in[l,r]\rightarrowu\),边权为\(w\)。求建完边......
  • 【故障诊断】基于斑马优化算法ZOA优化长短记忆网络LSTM实现故障诊断附matlab代码
    %导入数据集load(‘fault_diagnosis_data.mat’);%假设故障诊断数据保存在fault_diagnosis_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%划分训练集和测试集train_ratio=0.8;%训练集占总数据的比例train_size=round......
  • 【独家首发】Matlab实现淘金优化算法GRO优化Transformer-LSTM实现负荷数据回归预测
    %导入数据集load(‘load_data.mat’);%假设负荷数据保存在load_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%构建Transformer-LSTM模型model=create_transformer_lstm_model();%自定义创建Transformer-LSTM模型的函数......
  • 【独家首发】Matlab实现狮群优化算法LSO优化Transformer-LSTM实现负荷数据回归预测
    %导入数据集load(‘load_data.mat’);%假设负荷数据保存在load_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%构建Transformer-LSTM模型model=create_transformer_lstm_model();%自定义创建Transformer-LSTM模型的函数......
  • 让 cpython 优化恒定条件
    我正在用Python编写需要尽可能高效运行的代码,但有时我需要深入挖掘调试语句。不要注释这些输入或输出(或者使用外部预处理器来处理代码,就像这里建议的那样Python相当于#ifdefDEBUG或这里如何在python中实现“#ifdef”?|||)我想在模块的开头定义一个变量......
  • SQL Server性能优化秘籍:自定义统计信息收集的艺术
    SQLServer性能优化秘籍:自定义统计信息收集的艺术在数据库管理中,统计信息是优化查询性能的关键。SQLServer通过自动收集统计信息来帮助查询优化器选择最佳的执行计划。然而,在某些情况下,自动收集可能不足以满足特定需求。本文将详细介绍如何在SQLServer中实现数据库的自定......
  • G2O(3) 基本例子 2D-3D位姿优化
        #include<iostream>#include<opencv2/core/core.hpp>#include<opencv2/features2d/features2d.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/calib3d/calib3d.hpp>#include<Eigen/Core>#include&l......
  • 【学习笔记】线段树优化建图
    前言2023.5.31贺了线段树优化建图板子。当时那段时间还被\(bobo\)一顿乱\(D\),让我多写点\(DP\),数学,少些点重复的数据结构。2024.7.19没想到暑假集训CSP提高模拟2\(T3\)放了个线段树优化建图板子,加上之前线段树优化建图代码是贺的,今年寒假本想找时间步一下的结果没去......
  • debian系统优化
    第一,安装vim在Debian系统中安装Vim可以通过APT包管理器来完成。打开终端,然后执行以下命令:更新APT包索引:sudoaptupdate安装Vim:sudoaptinstallvim这将会安装Vim文本编辑器。安装完成后,你可以通过在终端中输入vim来启动Vim。 第二,开启root登录 ......