软件工程-软件测试-测试方法

article/2025/10/2 9:20:05

软件工程-测试方法-白盒和黑盒测试

软件工程-软件测试
软件测试方法可以分为静态测试和动态测试。

静态测试

静态测试是指被测试程序不在程序上运行,而是采用人工检测和计算机辅助金泰分析的手段对程序进行检测。

静态测试方法

(1)人工检测:是指不依靠计算机而是靠人工审查程序或评审软件,包括代码检查、静态结构分析和代码质量度量等;
(2)计算机辅助静态分析:利用静态分析工具对被测试程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。

动态测试

动态测试是指通过运行程序发现错误。

动态测试方法

白盒测试

概念

白盒法又称为逻辑覆盖法,因为要以程序(模块)内部的逻辑结构为基础来设计测试用例,主要用于单元测试。测试的关键也是如何选择高效的测试用例。
白盒测试的主要方法有程序结构分析、逻辑覆盖、基本路径测试等,它根据程序的控制结构设计导出测试用例,主要用于软件程序的验证。

原则

(1)对程序模块的所有独立的执行路径至少测试一次;
(2)对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;
(3)检查程序的内部数据结构,保证其结构的有效性。
(4)在循环的边界和运行界限内执行循环体;

方法
逻辑覆盖

在这里插入图片描述
标准
(1) 语句覆盖
选择足够的测试用例,使得程序中每个语句至少都能被执行一次。
(2) 判定覆盖
执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和一次“假”值。
(3) 条件覆盖
执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
(4) 判定/条件覆盖
执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。
(5) 条件组合覆盖
执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。

例:用白盒法测试以下程序段,如图所示,程序中有两个判定,每个判定都包含复合条件的逻辑表达式。
Procedure (VAR A,B,X:REAL);
BEGIN
IF(A>1) AND (B=0)
THEN X:=X/A ;
IF (A=2) OR (X>1)
THEN X:=X+1
END;
被测程序段流程图和流图
语句覆盖
条件组合覆盖

基本路径测试

概念
从广义角度讲,任何有关路径分析的测试都可以被称为路径测试。简单描述:路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。
路径的表达式
(1)弧a和弧b相乘,表示为ab。它表明路径是先经历弧a,接着经历弧b,弧a和弧b是先后相接的。
(2)弧a和弧b相加,表示为a+b。它表明两弧是“或”的关系,是并行的路段。

这里是引用
程序流图
可用以下三种方法计算环形复杂度
(1)流图中区域的数量对应于环形复杂性。
(2)给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中的边的数量,N是流图中节点的数量。
(3)给定流图G的环形复杂度V(G),定义为V(G)=P+1,p是流图G中判定节点的数量。

导出测试用例
程序段的基本路径集中有4条独立路径:
路径1:4 →14
路径2:4 →6 →7 →14
路径3:4 →6 →9 →10 →13 →4 →14
路径4:4 →6 →9 →12 →13 →4 →14

设计测试用例
测试用例

黑盒测试

概念

黑盒测试也成为功能测试,在不完全考虑软件内部结构和特性的情况下,测试软件外部特性。

测试错误

(1)是否有错误的功能或遗漏的功能;
(2)界面是否有误、输入是否正确、输出是否正确;
(3)是否有数据结构或外部数据库访问错误;
(4)性能是否能够接受;
(5)是否有初始化或终止性错误。

方法
等价类划分

等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。
使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
划分等价类:等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。
等价类的划分有两种不同的情况:
1. 有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。
2. 无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。
在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。
划分等价类等价类的原则。
1. 如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。

例:例如,在程序的规格说明中,对输入条件有一句话: “…… 项数可以从1到999 ……”
则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”或“项数>999”。在数轴上表示成:

在这里插入图片描述
2.如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。
3.如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。
4.如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。
5.如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
测试用例
(1) 为每一个等价类规定一个唯一编号;
(2) 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
(3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
在这里插入图片描述
在这里插入图片描述

边界值划分

边界值分析法是一种很实用的黑盒测试方法,是对等价类划分方法的补充。人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误
选取正好等于、刚刚大于或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
原则
(1)如果输入条件对取值范围进行了界定,则应以边界内部以及刚超出范围边界外的值作为测试用例。
(2)如果对取值的个数进行了界定,则应当分别以最大、最小个数及稍小于最小、稍大于最大个数作为测试用例。
(3)对于输出条件,同样可以应用上面提到的两条原则来进行测试用例设计。
(4)如果程序规格说明书中指明输入或者输出是一个有序集合,就应当注意选取该有序集合中的第一个和最后一个元素作为测试用例。
测试用例规则
规则1
如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值及刚刚超过这个范围边界的值作为测试输入数据。
规则2
如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1个、比最小个数少一个的数作为测试数据。
基本思想是:故障往往出现在输入变量的边界值附近。
例如:当一个循环条件为“≤”时,却错写成“<”;计数器发生少计一次。
边界值分析利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例。

例:
比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。 我们应注意到这三个数值应当满足:
A>0、B>0、C>0、
A+B>C、A+C>B、B+C>A,
才能构成三角形。但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。
在这里插入图片描述

错误推测

人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。
错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。

因果图

因果图是从自然语言描述的程序规格说明中找出因(输入条件)和果(输出或者程序状态的改变),通过因果图转换为判定表。
步骤
(1)分析程序规格说明的描述中,哪些是原因,哪些是结果;
(2)分析程序规格说明的描述中予以的内容,并将其表示成连接各个原因与结果的“因果图”;
(3)表明约束条件;
(4)把因果图转换成判定表;
(5)为判定表中每一列的情况设计测试用例。


http://chatgpt.dhexx.cn/article/C6LMc4EH.shtml

相关文章

软件测试方法和技术有哪些?

软件测试方法和技术有哪些?包括软件测试基础、软件测试方法、软件测试流程和规范、单元测试与集成测试、系统测试、验收测试、软件本地化测试、测试自动化及其框架、白盒测试和黑盒测试等。 软件测试方法技术   软件测试方法: 一、等价类测试方法的…

软件测试方法汇总 - 从不同角度分析软件测试方法有哪些

1、从是否关心内部结构来看 (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。 (2)黑盒测试:又称为数据驱…

常见的软件测试方法有,常见的几种软件测试方法都有哪些

随着互联网的不断发展,越来越多的人也都开始学习软件测试的相关技术,而今天我们就一起来了解一下,常见的几种软件测试方法都有哪些。 1、单元测试 单元测试测试的是代码库的单元。 它们直接调用函数或单元,并确保返回正确的结果。…

Dynatrace系列之- 标记常见问题

Dynatrace系列之- 标记常见问题 在大型环境中,系统的某些方面可能会持续触发不必要的警报。这些告警可能来自非关键组件或者是非关键情况下的资源不足的问题。通常这些问题不需要人员响应。 为了减少此类警报并避免发出垃圾告警邮件,Dynatrace AI根因分…

什么是 Dynatrace 里的 Visually Complete 度量标准

Dynatrace 中的 Visually Complete 是一个度量标准,用于测量在加载过程中用户在页面上看到的内容。Visually Complete 指标是当一个用户看到页面上的所有重要元素并且它们正确地渲染时所测量的时间点。这意味着所有可见的文本、图像和视频都已加载并正确显示。该指标…

DevSecOps 团队请避免陷入这些可观测性陷阱

如果您发现难以管理跨越多个云运行不断变化的容器化工作负载的庞大基础架构,那么您并不孤单。 根据 Dynatrace 近期发布的一项研究,超过一半的组织的 DevSecOps 团队在可观测性数据方面感到痛苦。 多云和混合计算设置的兴起,使大部分组织能够…

前端性能分析工具Dyna Trace使用心得(转)

什么是dynatrace ajax “dynatrace ajax 是一个详细的底层追踪工具,它不仅可以显示所有请求和文件在网络中传输的时间,还会记录浏览器render,CPU消耗、JS解析和运行情况等详细的信息,而这些也只是dynatrace ajax的冰山一角。” 为…

使用dynatrace+showslow进行前端性能测试

原文:http://blog.csdn.net/zhangren07/article/details/6883617 1.背景 应用的性能测试与优化目前主要停留在服务器端的反馈,而对于前端性能标准的研究与测试相对比较空白,缺乏统一的标准与工具。众所周知,浏览器html组件的下载…

什么是 Dynatrace 里的 User Action

用户操作是与最终用户界面的交互,涉及对 Web 服务器的调用,这可能有多个嵌套调用。 它是由用户输入(例如页面加载、单击或触摸)触发的从一个视图到另一个视图的转换。 Web 应用的 User Action 类型: Load actionsXHR …

Ultra Fast Deep Lane Detection with HybridAnchor Driven Ordinal Classification

Abstract 我们将车道检测过程视为一个使用全局特征的锚定驱动的有序分类问题。 首先,我们在一系列混合(行和列)锚点上用稀疏坐标表示车道。在锚驱动表示的帮助下,我们将车道检测任务重新表述为一个有序分类问题,以得到…

Dynatrace系列之-排除干扰请求

排除干扰请求 Dyatrace监控了所有服务端的请求。当特定请求的性能或者失败率高的时候,Dynatrace将触发告警。然尔不是所有的高并发的请求都是重要的请求,有些慢请求也不需要告警。比如心跳请求。这些不重要的请求可能会干扰整个服务(service)的响应时间…

Web Performance工具 – Dynatrace AJAX Edition

Dynatrace AJAX Edition是我认为最为强大的Web Performance Profile工具。废话不说了,直接上图介绍其主要功能。 先用IE访问你需要profile的网站,例如google,可以点击dynatrace工具栏来启动。这时候dynatrace就开始记录这个网站触发的一切事件。 我简单测试一下,点击googl…

DynamicArray

文章目录 1 DynamicArray设计要点2 继承关系图和接口实现3 代码实现4 代码优化 1 DynamicArray设计要点 类模板 动态确定内部数组空间的大小实现函数返回数组长度构造拷贝和赋值操作 2 继承关系图和接口实现 继承关系图 接口实现 template < typename T > class D…

云途加油站 | 一文读懂 Dynatrace 与 Amazon Lambda 的“双剑合璧心法”

Amazon Lambda 正在掀起企业级云市场的一场小潮流。不少业内人士发现&#xff0c;越来越多的企业正在将 Lambda 函数加入其技术栈中。 这一潮流其实不难理解—— 一则&#xff0c;门槛低。Amazon Lambda为企业进入云计算提供了相对较低的门槛&#xff0c;无需立即全面推行转移…

Dynatrace AppMon最佳实践(一)

经常有客户问我,如何利用Dynatrace捕获必要的应用性能监控信息,从而快速诊断性能问题?所谓捕获必要的信息,即是在应用出现性能下降的时候,PurePath能够捕获导致事务响应缓慢的方法,或是导致事务失败的异常栈信息,亦或是用户请求的上下文参数。如何通过Dynatrace捕获必要…

什么是 Dynatrace 的 Speed Index 度量标准

Dynatrace 中的 Speed Index 是一种度量网页加载速度的标准&#xff0c;它与 Visually Complete 类似&#xff0c;但更加精细。Speed Index 是一个计算值&#xff0c;反映了整个页面的加载速度&#xff0c;并将所有重要元素的渲染时间考虑在内。与 Visually Complete 不同的是&…

dynamic-datasource动态数据源学习

学习链接 spring整合mybatis的核心思路 & 数据源动态切换 & 多数据源事务控制 - 自己的链接&#xff08;本篇文章的上篇&#xff09; Mybatisplus生成代码配置 & p6spy打印sql & mybatis日志打印 & mybatisplus用法 dynamic-datasource-spring-boot-sta…

什么是 Dynatrace 的 Largest Contentful Paint

Dynatrace 多维分析使 Web 开发人员能够沿多个过滤维度分析浏览器监控执行情况。 多维分析页面以图表形式显示选定时间范围内的性能、可用性和错误计数。 可以选择较短的分析范围并以散点图和列表格式查看单个数据点。 页面顶部显示长期&#xff08;时间序列&#xff09;数据…

使用 Dynatrace 对 Node.js 应用的性能数据进行分析

JavaScript Storefront 应用程序的性能问题的表现形式有多种&#xff0c;最典型的是响应时间(response time)的恶化&#xff0c;甚至由于资源耗尽导致的网站完全宕机。 由于 JavaScript Storefront 涉及许多组件&#xff0c;因此确定性能问题的根源可能具有挑战性&#xff0c;如…

dynatrace 详解

dynaTrace Ajax&#xff1a;前端性能分析利器 谢 菊, 性能分析工程师, IBM 谢菊&#xff0c;IBM 中国软件开发中心&#xff08;CDL&#xff09;Lotus 部门的软件性能分析工程师&#xff0c;具有多个产品的性能测试经验&#xff0c;如IBM Portal Accelerator 和IBM Docs。目前正…