软件测试的方法有哪些?
软件测试
根据利用的被测对象信息的不同,可以将软件测试方法分为:黑盒测试、灰盒测试、白盒测试。
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)安全性错觉,认为进行了自动化测试的软件就是安全的、质量有保证的只有手工测试做好了,明确了测试的观察点,才能把自动化测试做好,所以手工测试是自动化测试的一个基础
标签:黑盒测试、白盒测试、灰盒测试
文章来源:软件测试的方法有哪些? - 成都柯信优创信息技术服务有限公司
相关文章:
软件测试的方法有哪些?
软件测试 根据利用的被测对象信息的不同,可以将软件测试方法分为:黑盒测试、灰盒测试、白盒测试。 1、白盒测试 1)概念:是依据被测软件分析程序内部构造,并根据内部构造分析用例,来对内部控制流程进行测试…...
Python Qt学习(二)Qt Designer
一开始以为Designer是个IDE,多番尝试之后,发现,是个UI设计工具,并不能在其中直接添加代码。保存之后,会生成一个后缀是UI的文件,再用pyuic5.exe将ui文件转化成py文件。pyuic5 -o 目标py文件 源ui文件...
我的数据上传类操作(以webDAV为例)
在登录处进行初始化: 1.读取配置 GModel.ServerSetin JsonToIni.GetClass<ServerSet>(ConfigFiles.ConfigFile);if (!string.IsNullOrWhiteSpace(GModel.ServerSetin.FTPUser)){OPCommon.NetControls.NetworkShareConnect.connectToShare(GModel.ServerSeti…...
move与函数指针的简单使用
std::move() C11的标准库 提供了一个非常有用的函数 std::move(),std::move() 函数将一个左值强制转化为右值引用,以用于移动语义。 就是说 std::move(str); 之后原来的值因为变成了右值失效了 但是这样赋值可以避免出现拷贝 #include <iostream&g…...
第五章 树与二叉树 二、二叉树的定义和常考考点
一、定义 二叉树可以用以下方式详细定义: 二叉树是由节点构成的树形结构,每个节点最多可以有两个子节点。每个节点有以下几个属性: 值:存储该节点的数据。左子节点:有一个左子节点,如果没有则为空。右子节…...
算法笔记/USACO Guide GOLD金组DP 1. Introduction to DP
USACO Guide中金组的内容分为一下六个章节 DP数学图论数据结构树一些附加主题 今天学习DP,以下内容: 初入DP背包DP图表中的路线最长递增序列状态压缩DP区间DP数位DP 初入DP Dynamic Programming (DP) is an important algorithmic technique in Comp…...
天锐绿盾安全U盘系统
安全U盘系统 01 简介 天锐绿盾安全U盘系统,是一款致力于保障U盘数据内容安全的产品。通过严格身份认证、便捷安全的密保机制、智能的U盘锁定或自毁设置、详细的文件操作日志、文件粉碎、设置还原等,天锐绿盾安全U盘系统为您U盘的数据保驾护航࿰…...
灰色预测模型
当谈论灰色预测时,通常是指灰色系统理论,它是一种用于处理少量数据或缺乏充分信息的情况下进行预测和分析的数学方法。灰色预测的核心思想是通过建立灰色模型来分析和预测数据的变化趋势。 我会解释灰色预测的基本原理、步骤和方法: 1. 灰色…...
Yolo系列-yolov1
YOLO-V1 经典的one-stage方法 YouOnlyLookOnce,名字就已经说明了一切!把检测问题转化成回归问题,一个CNN就搞定了!可以对视频进行实时检测,应用领域非常广! 核心思想: Yolov1的核心思想是将对象…...
单片机TVS/ESD二极管防护
TVS 瞬态电压抑制二极管Transient Voltage Suppressor ESD 静电释放二极管 Electro-Static discharge 这两种本质上都是二极管。都是利用了二极管正向导通、反向截止的特性。二极管在反向截止截止条件下,如果电压继续增大,将会引发雪崩,使得…...
TCP协议的重点知识点
TCP协议的重点知识点 TCP(传输控制协议)是一种面向连接、可靠的数据传输协议,工作在传输层,提供可靠的字节流服务。它是互联网协议栈中最重要、最复杂的协议之一,也是面试中常被问到的知识点。本文将详细介绍TCP协议的各个重要概念。 TCP基本特性 TCP主要具有以下基本特性: …...
大数据——一文熟悉HBase
1、HBase是什么 HBase是基于HDFS的数据存储,它建立在HDFS文件系统上面,利用了HDFS的容错能力,内部还有哈希表并利用索引,可以快速对HDFS上的数据进行随时读写功能。 Hadoop在已经有一个HiveMapReduce结构的数据读写功能&#x…...
如何有效进行RLHF的数据标注?
编者按:随着大语言模型在自然语言处理领域的广泛应用,如何从人类反馈进行强化学习(RLHF)已成为一个重要的技术挑战。并且RLHF需要大量高质量的人工数据标注,这是一个非常费力的过程。 本文作者在数据标注领域具有丰富经…...
2023年8月22日OpenAI推出了革命性更新:ChatGPT-3.5 Turbo微调和API更新,为您的业务量身打造AI模型
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
windows配置wsl,Unbuntu启动GPU加速
wsl全称Windows Subsystem for Linux,windows电脑下的linux子系统,对于想用Linux的Windows用户来说wsl是一个不错的选择。 安装wsl 两种方法可以安装wsl,这个默认安装在C盘。 方法一运行命令安装 wsl --install方法二,在windo…...
Postman测WebSocket接口
01、WebSocket 简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直…...
【内网穿透】搭建我的世界Java版服务器,公网远程联机
目录 前言 1. 搭建我的世界服务器 1.1 服务器安装java环境 1.2 配置服务端 2. 测试局域网联机 3. 公网远程联机 3.1 安装cpolar内网穿透 3.1.1 windows系统 3.1.2 linux系统(支持一键自动安装脚本) 3.2 创建隧道映射内网端口 3.3 测试公网远程…...
Unable to Locate package python2| Linux Ubuntu系统下python2的安装
Linux Ubuntu系统下python2的安装 FSL的安装脚本是用Python2写的,新版本的Ubuntu (16以后)在默认情况下没有安装Python2。在终端输入 python2,若提示没有相应的命令,则需要先安装Python2,如下指令…...
从上帝视角俯瞰vue2路由(简单易懂)
文章目录 路由原理(hash)路由安装和使用(vue2)路由跳转路由的传参和取值嵌套路由路由守卫完整代码 路由原理(hash) 单页应用的路由模式有两种 哈希模式(利用hashchange 事件监听 url的hash 的…...
STL-空间配置器的了解
前言 空间配置器,顾名思义就是为了各个容器高效的管理空间(空间的申请与回收)的,在默默的工作的。虽然在常规上使用STL时,可能用不上它,但是站在学习研究的角度,学习它的实现原理对我们有很大的…...
哔哩哔哩 B站 bilibili 视频视频音效调节 清澈人声
视频音效调节方式:直接视频播放内容界面内鼠标右键点击视频音效调节 注意:需要使用的是谷歌浏览器,我的火狐浏览器试了不行,都没选项,火狐的出来的界面是这样的: 目录 具体操作如下: 1、谷歌…...
下一代存储解决方案:湖仓一体
文章首发地址 湖仓一体是将数据湖和数据仓库相结合的一种数据架构,它可以同时满足大数据存储和传统数据仓库的需求。具体来说,湖仓一体可以实现以下几个方面的功能: 数据集成: 湖仓一体可以集成多个数据源,包括结构…...
IntelliJ IDEA 2023.2.1 修复版本日志
我们刚刚发布了 v2023.2 的第一个错误修复更新。 您可以从 IDE 内部、使用工具箱应用程序或通过快照(如果您使用的是 Ubuntu)更新到此版本。您也可以直接从我们的网站下载。 以下是最新版本中包含的最值得注意的改进和修复的列表: 我们已经解…...
算法通关村十三关 | 数组字符串加法专题
1. 数组实现整数加法 题目:LeetCode66,66. 加一 - 力扣(LeetCode) 思路 我们只需要从头到尾依次运算,用常量标记是否进位,需要考虑的特殊情况是digits [9,9,9]的时候进位,我们组要创建长度加1…...
k8s--基本概念理解
必填字段 在要创建的 Kubernetes 对象的文件中.yaml,您需要设置以下字段的值: apiVersion- 您使用哪个版本的 Kubernetes API 创建此对象 kind- 你想创建什么样的对象 metadata- 有助于唯一标识对象的数据,包括name字符串、UID和可选namesp…...
流媒体开发千问【持续更新】
H.264中IDR帧和I帧区别 H.264/AVC编码标准中,IDR帧和I帧都是关键帧,即它们都不依赖于其他帧进行解码。但是,它们之间存在明确的区别: 定义与功能: I帧(Intra-frame):I帧是一个内部编…...
全球各国官方语言大盘点,英语不得不学哇。。。
因国家和地区范围界定不同,官方语言只是个相对概念。具体而言是一个国家通用的正式语言或认定的正式语言。它是为适应管理国家事务的需要,在国家机关、正式文件、法律裁决及国际交往等官方场合中规定一种或几种语言为有效语言的现象。官方语言也是一个国…...
【mq】如何保证消息可靠性
文章目录 mq由哪几部分组成rocketmqkafka 为什么需要这几部分nameserver/zookeeper可靠性 broker可靠性 生产者消费者 mq由哪几部分组成 rocketmq kafka 这里先不讨论Kafka Raft模式 比较一下,kafka的结构和rocketmq的机构基本上一样,都需要一个注册…...
疲劳检测-闭眼检测(详细代码教程)
简介 瞌睡经常发生在汽车行驶的过程中,该行为害人害己,如果有一套能识别瞌睡的系统,那么无疑该系统意义重大! 实现步骤 思路:疲劳驾驶的司机大部分都有打瞌睡的情形,所以我们根据驾驶员眼睛闭合的频率和…...
大数据日常运维命令
1、HDFS NameNode /usr/local/fqlhadoop/hadoop/sbin/hadoop-daemon.sh start namenode /usr/local/fqlhadoop/hadoop/sbin/hadoop-daemon.sh stop namenode bin/hdfs haadmin -DFSHAAdmin -getServiceState n1 2、HDFS DataNode /usr/local/fqlhadoop/hadoop/sbin/hadoop-…...
孝感个人网站建设/优化网络的软件下载
Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令. Flask-Migrate 是一个数据迁移框架,需要通过Flask-script库来操作. 一.配置Flask-SQLAlchemy 程序使用的数据库地址需要配置在SQLALCHEM…...
宁津诚信建设网站/宁德市房价
织梦网站漏洞层出不穷,织梦核心目录include是关键,经常被人访问,当反面教材拿来练手,所以我们要把验证码搬出include目录,织梦验证码搬家,如果网站不使用验证码的,可以将include文件夹改名。被别…...
可以做公司宣传的网站有哪些/互联网营销师证书含金量
Log4J是Apache的一个开放源代码项目(http://logging.apache.org/log4j/docs/),它是一个日志操作包。通过使用Log4J,可以指定日志信息输出的目的地,控制每一条日志的输出格式,定义日志信息的级别。所有这些功能通过一个配置文件灵活进行配置。…...
使用云主机做网站教程/网站优化网站优化
SpringMVC_requestMapping 项目搭建见上篇《初识 Spring(09)---(搭建SpringMVC项目)》 1.requestMapping既可以用在方法上,也可以用在类上 文件目录: 代码:新建SpringmvcTest.java package com.neuedu.springmvc.controller;i…...
南京企业网站设计建设/做网上营销怎样推广
/*第一种方法 require:缺点就是如果加载文件过多,需要多个require*/// require(A.CLASS.PHP);// require(B.CLASS.PHP);/*第二种方法__autoloadPHP5在new 一个没有存在的类,会自动调用这个__autoload函数,____autoload只是去include_path寻找…...
做企业网站设/公司网站制作模板
我在我的测试床系统上执行AJAX调用时遇到问题。网站上有错误的SSL证书的Jquery Ajax它没有域的有效SSL证书,而是使用生产系统使用的SSL证书,因为它的设置完全相同。我猜测这是因为SSL证书不好,我的ajax请求被迫使用HTTP而不是HTTPS。我可以确…...