软件测试的方法有哪些?

news2024/11/23 9:09:09

软件测试

根据利用的被测对象信息的不同,可以将软件测试方法分为:黑盒测试、灰盒测试、白盒测试。

1、白盒测试

1)概念:是依据被测软件分析程序内部构造,并根据内部构造分析用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况,即已知软件产品的内部实现过程,可以通过测试证明每种内部操作是否符合设计规格的要求,所有内部成分是否已经过检查。

2)思想:白盒测试又被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试、是基于程序结构的逻辑驱动测试。

3)测试对象: 函数、算法与数据结构

4)目的

(1)一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问题能基本得到消除;

(2)保证内部结构达到一定的覆盖程度,能够给予软件代码质量更大的保证;

(3)白盒测试发现问题后,解决问题的成本较低。

5)白盒测试的常用技术:

(1)静态分析:包括控制流分析、数据流分析、信息流分析

(2)动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等 ,逻辑覆盖测试根据覆盖的对象不同,可以分为:语句覆盖、判定(分支)覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 程序插装指调试程序时,在程序中插入一些打印语句,程序执行时打印出我们关心的信息,通过这些信息了解执行过程中程序的一些动态行为。

6)白盒测试的特点:

(1)测试人员需要了解软件的实现;

(2)可以检测代码中的每条分支和路径;

(3)揭示隐藏在代码中的错误;

(4)对代码的测试比较彻底;

(5)实现代码结构上的优化;

(6)投入较大,成本高;

(7)无法检测代码中遗漏的路径和数据敏感性错误;

(8)不验证规格的正确性。

2、黑盒测试

1)定义:把测试对象看成是一个黑盒,只考虑其整体特性,不考虑其内部具体实现过程。即已知产品的需求规格,但不知其内部实现,可以进行测试证明每个需求是否实现。

2)思想:基于规格的测试,测试类型都来源于质量模型。

3)测试对象:系统、子系统、模块、子模块、函数等。

4)常用的黑盒测试方法:等价类划分法、边界值分析法、因果图分析法、判定表法、状态迁移法等。

5)目的:减少测试时的测试用例数,用尽量少的测试用例完成测试,发现更多的问题。

6)黑盒测试的特点

(1)对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率要高;

(2)测试人员不需要了解软件的实现细节,包括特定的编程语言;

(3)从用户的视角进行测试,很容易被理解和接受;

(4)有助于暴露任何规格不一致或有歧义的问题;

(5)没有清洗和简明的规格,测试用例很难设计;

(6)不能控制内部执行路径,会有很多内部程序路径没有被测试到;

(7)不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)

3、灰盒测试

利用被测对象的整体特性信息,采用黑盒测试方法;利用被测对象的内部具体实现信息,采用白盒测试方法;介于白盒和黑盒测试之间的测试方法测试方法称之为灰盒测试。

1)定义:如果即利用被测对象的整体特性信息,又利用被测对象的内部具体实现信息,采用得就是灰盒测试方法。两种信息占得比例不同,相应的灰度就不同。

2)适用对象:一般集成测试采用灰盒测试方法。

按照被测试的软件系统是否运行,将测试分为静态测试和动态测试。

1、静态测试

1)定义:不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术,例如:代码走读、文档评审、程序分析等。

2)常用技术:静态分析技术。

(1)定义:静态分析是一种不通过执行程序而分析程序的技术。

(2)功能:检查软件的表示和描述是否一致,没有冲突或者没有歧义

(3)目的:纠正软件系统在描述、表示和规格上的错误,因此是任何进一步测试的前提。

(4)静态分析技术主要有3种不同的程序测试可能性

考虑程序是否满足编码规则,语法上是否具有一致性和完整性;

考虑文档描述是否规范、准确、便于查阅;

考虑程序和文档之间的一致性。

(5)静态分析技术有:控制流分析、数据流分析和信息流分析,下面一一介绍:

1、控制流分析

(控制流相关概念)

程序元素:一个程序元素通常是一个条件,一个简单的语句或者一块语句(多个连续语句)。

控制流关系:一个程序的控制流关系(Control Flow Relation)叙述了程序元素和他们执行的次序之间的关系。

控制流图:对应于控制流关系的图被称为控制流图。

控制流矩阵:有控制流图得到,反映相邻程序元素之间的先后顺序关系。

(控制流分析能发现的问题 )

通过对控制流信息进行分析,确保写出的程序不应包含:转向并不存在的标号;没用的语句标号;从程序入口进入后无法达到的语句;不能达到停机语句的语句。

2、数据流分析

(数据流相关概念 )

数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化(代码优化主要包含:结构优化即可读性、时间效率和空间效率优化、可移植性优化)。数据流分析法关键是数据的引用和定义。 数据的定义:如果程序中某一语句执行时能改变某程序变量V的值,则称V是被该语句定义的。

数据的引用:如果程序中一语句的执行引用了内存中变量V的值,则称V是被该语句引用的。

(数据流分析步骤 )

根据代码得到数据流表

分析数据流表找到以下两种错误:变量未定义但被引用

变量定义但未被引用

2、动态测试

1)定义:按照预先设计的数据和步骤去运行被测软件系统,从而对被测试软件进行检测的一种测试技术。

2)特点:主要分析软件系统在模拟或是真实的环境中执行之前、之中、之后的动态行为。

3)常用技术:动态分析技术

(1)定义:对软件系统运行行为进行分析,包含程序在受控的环境下使用特定的输入进行正式的运行,和期望的结果比较以检查系统运行是正确还是不正确。

(2)常用动态分析技术:

路径测试

分支测试

性能测试

(3)常用动态分析工具及功能

测试覆盖率分析:用于测试对代码的检测范围;

跟踪:跟踪程序执行期间的所有路径

调整:度量程序执行过程中所有的资源

模拟:模拟系统的部分

3、所有测试方法都可以归类为手工测试和自动化测试。

1、手工测试

1)定义:手工测试是传统的测试方法,由测试人员手工编写测试用例,执行,观察结果。

2)缺点:测试工作量大,重复多,回归测试难以实现

2、自动化测试

1)定义:自动化测试指利用软件测试工具自动实现全部或者部分测试工作:管理、设计、执行和报告,自动化测试节省大量的测试开销,并能够完成一些手工测试无法实现的测试。

2)自动化测试的意义

(1)对程序新版本运行前一版本执行的测试,提高回归测试效率

(2)可以运行更多更频繁的测试

(3)可以执行手工测试困难或不可能做到的测试,比如大量的重复操作或者集成测试

(4)更好的利用资源,比如测试仪器或者被测对象

(5)测试具有一致性和可重复性,及自动化测试的步骤和结果完全一样的测试的复用性,及自动化测试甲苯可以拆分开给其他测试脚本使用

(6)可以更快地将软件推向市场,软件发布前进行高效的回归测试,减少软件发布的时间

(7)增加软件的信任度,通过自动化测试提高了测试效率,可以吧节约的时间拿出来做更多的测试

3)自动化测试的限制

(1)不能取代手工测试,自动化测试只能提高测试效率,不能提高测试有效性,即不可能发现更多缺陷更多

(2)对测试设计依赖性极大,测试设计的不好会遗漏问题

(3)自动化测试对软件开发具有很大的依赖性,开发出现变更可能导致前面的自动化测试完全失效

(4)工具本身并不具备想象力,工具不具有智能

4)自动化测试的误区

(1)不现实的期望,希望自动化能取代手工测试

(2)缺乏测试实践经验,手工测试都做不好,或者经验积累不够,就尝试自动化,很难成功

(3)期望自动化测试发现大量新缺陷,自动化只能保证测试执行效率,确保已有的问题不会再发生,发现新缺陷不是其目的

(4)安全性错觉,认为进行了自动化测试的软件就是安全的、质量有保证的只有手工测试做好了,明确了测试的观察点,才能把自动化测试做好,所以手工测试是自动化测试的一个基础

标签:黑盒测试、白盒测试、灰盒测试

文章来源:软件测试的方法有哪些? - 成都柯信优创信息技术服务有限公司

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/938309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Dpabi的功能连接

1.预处理 这里预处理用Gretna软件进行,共分为以下几步: (1)DICOM转NIfTI格式 (2)去除前10个时间点(Remove first 10 times points):由于机器刚启动、被试刚躺进去也还需适应环境,导致刚开始扫描的数据很…

macOS 安装 Homebrew 详细过程

文章目录 macOS 安装 Homebrew 详细过程Homebrew 简介Homebrew 安装过程设置环境变量安装 Homebrew安装完成后续设置(重要)设置环境变量homebrew 镜像源设置macOS 安装 Homebrew 详细过程 本文讲解了如何使用中科大源安装 Homebrew 的安装过程,文章里面的所有步骤都是必要的,需…

ExpressLRS开源之RC链路性能测试

ExpressLRS开源之RC链路性能测试 1. 源由2. 分析3. 测试方案4. 测试设计4.1 校准测试4.2 实验室测试4.3 拉距测试4.4 遮挡测试 5. 总结6. 参考资料 1. 源由 基于ExpressLRS开源基本调试验证方法,对RC链路性能进行简单的性能测试。 修改设计总能够满足合理的需求&a…

Streamlit 讲解专栏(十一):数据可视化-图表绘制详解(中)

文章目录 1 前言2 绘制交互式散点图3 定制图表主题4 增强数据可视化的交互性与注释步骤1步骤二 5 结语 1 前言 在上一篇博文《 Streamlit 讲解专栏(十):数据可视化-图表绘制详解(上)》中,我们学习了一些关…

Vue脚手架中安装ElementUi

目录 ElementUi简介: ElementUi下载: npm 安装: 引入ElementUi: 测试是否引入成功: Element-ui官网:组件 | Element ElementUi简介: ElementUi,是由国内的饿了么团队开发并开源的一套为开…

美五代机装备激光武器可行性分析

源自:北京蓝德信息科技有限公司 一、SHiELD项目研究进展分析 图表:SHiELD项目主要情况 二、机载激光武器面临的技术挑战分析 三、五代机装备激光武器的可行性 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨,并不…

三维模型OBJ格式轻量化压缩处理效率提高的技术方法探讨

三维模型OBJ格式轻量化压缩处理效率提高的技术方法探讨 要提高三维模型OBJ格式轻量化压缩处理的效率,可以采取以下方法: 1、优化算法选择:选择合适的优化算法对模型进行轻量化处理。不同的优化算法有不同的时间复杂度和效果。一些常用的优化…

软件测试用例经典方法 | 因果图法及案例

典型的黑盒测试用例设计方法包括等价类划分法、边界值分析法、决策表法、因果图法等。 如果程序的输入条件之间相互存在联系,那么就会使情况变得复杂,因为要检查输入条件的组合情况并不是一件容易的事情,即使把所有输入条件划分为等价类,它们之间的组合情况也相当多,难以分析。…

【Go 基础篇】深入探索:Go语言中的二维数组

在计算机编程中,数组是一种基本的数据结构,用于存储相同类型的元素。而二维数组作为数组的一种扩展,允许我们以类似表格的方式存储和处理数据。在Go语言中,二维数组是一个重要的概念,本文将深入探讨Go语言中的二维数组…

兄弟,王者荣耀的段位排行榜是通过Redis实现的?

目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能?2、Redis实现计数器的原理(1)使用INCR命令实现计数器(2)使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…

基于知识引入的情感分析研究综述

1.引文 情感分析知识 当training数据不足以覆盖inference阶段遇到的特征时,是标注更多的数据还是利用现有外部知识充当监督信号? 基于机器学习、深度学习的情感分析方法,经常会遇到有标注数据不足,在实际应用过程中泛化能力差的局…

C语言巧用联合体union判定数据的存储格式(大小端)

联合体大家可能比较陌生,但是大家对结构体稍微熟悉一点吧。其实它们二个类似,只不过结构体成员占用不同的地址,而联合体所有成员占用相同地址。利用这个特性我们就能判断在当前编译器下存储的数据的格式。那么如何确定呢? 我这里…

FPGA GTX全网最细讲解,aurora 8b/10b协议,OV5640板对板视频传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTX 全网最细解读GTX 基本结构GTX 发送和接收处理流程GTX 的参考时钟GTX 发送接口GTX 接收接口GTX IP核调用和使用 4、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTX aurora 8b/10b数据对…

Java“牵手”天猫图片识别商品信息API接口数据,图片搜索商品接口,天猫拍立淘API接口申请指南

天猫平台按图搜商品接口(拍立淘)是开放平台提供的一种API接口,通过调用API接口,开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、最低价、当前价格、价格信息等详细信息 。 获取拍立淘接口API…

Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421

文章目录 0.前言1.参考文档2.基础介绍3.漏洞利用原理3.解决方案1. 升级Spring Boot版本2. 限制端点的访问3. 禁用环境端点4. 不公开敏感的Actuator端点5. 开启安全审计 0.前言 背景: Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421。被扫描到…

软件工程(二十) 系统运行与软件维护

1、系统转换计划 1.1、遗留系统的演化策略 时至今日,你想去开发一个系统,想完全不涉及到已有的系统,基本是不可能的事情。但是对于已有系统我们有一个策略。 比如我们是淘汰掉已有系统,还是继承已有系统,或者集成已有系统,或者改造遗留的系统呢,都是不同的策略。 技术…

雪花假设:训练deep GNN 新思路

本文由中科大数据智能实验室联合阿卜杜拉国王科技大学(KSUST)、同济大学、新加坡国立大学、深圳科技大学、香港科技大学等多家院校联合提出了一种全新的训练深度GNN的策略—雪花假设,旨在帮助未来训练深度GNN并克服其中可能出现的over-smooth…

让敌人分兵,就能创造局部优势

让敌人分兵,就能创造局部优势 【安志强趣讲《孙子兵法》第22讲】 【原文】 故备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。寡者,备人者也;众者,使…

软件工程(十八) 行为型设计模式(四)

1、状态模式 简要说明 允许一个对象在其内部改变时改变它的行为 速记关键字 状态变成类 类图如下 状态模式主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。比如订单从待付款到待收货的咋黄台发生变化,执行的逻辑是不一样的。 所以我们将状态抽象为一…

软件工程(十七) 行为型设计模式(三)

1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…