各种测试方法,黑盒测试、白盒测试,静态测试,动态测试


1.测试方法
软件测试方法的分类有很多种,以测试过程中程序执行状态为依据可分为静态测试 (Static
Testing,ST) 和动态测试 (Dynamic Testing,DT); 以具体实现算法细节和系统内部结构的相
关情况为根据可分黑盒测试、白盒测试和灰盒测试3类;从程序执行的方式来分类,可分为人
工测试 (Manual Testing,MT) 和自动化测试 (Automatic Testing,AT)。
(1)静态测试。静态测试是被测程序不运行,只依靠分析或检查源程序的语句、结构、过
程等来检查程序是否有错误。即通过对软件的需求规格说明书、设计说明书以及源程序做结构
分析和流程图分析,从而来找出错误。例如不匹配的参数,未定义的变量等。
(2)动态测试。动态测试与静态测试相对应,是通过运行被测试程序,对得到的运行结果
与预期的结果进行比较分析,同时分析运行效率和健壮性能等。这种方法可简单分为3个步骤:
构造测试实例、执行程序以及分析结果。
(3)黑盒测试。黑盒测试将被测程序看成是一个黑盒,工作人员在不考虑任何程序内部结
构和特性的条件下,根据需求规格说明书设计测试实例,并检查程序的功能是否能够按照规范
说明准确无误的运行。其主要是对软件界面和软件功能进行测试。对于黑盒测试行为必须加以
量化才能够有效的保证软件的质量。
(4)白盒测试。白盒测试主要是借助程序内部的逻辑和相关信息,通过检测内部动作是否
按照设计规格说明书的设定进行,检查每一条通路能否正常工作。白盒测试是从程序结构方面
出发对测试用例进行设计。主要用于检查各个逻辑结构是否合理,对应的模块独立路径是否正
常以及内部结构是否有效。常用的白盒测试法有控制流分析、数据流分析、路径分析、程序变
异等。根据测试用例的覆盖程度,分为语句覆盖、判定覆盖、分支覆盖和路径覆盖等。
(5)灰盒测试。灰盒测试介于黑盒与白盒测试之间。灰盒测试除了重视输出相对于输入的
正确性,也看重其内部的程序逻辑。但是,它不可能像白盒测试那样详细和完整。它只是简单
地靠一些象征性的现象或标志来判断其内部的运行情况,因此在内部结果出现错误,但输出结
果正确的情况下可以采取灰盒测试方法。因为在此情况下灰盒比白盒高效,比黑盒适用性广的
优势就凸显出来了。
(6)自动化测试。自动化测试就是软件测试的自动化,即在预先设定的条件下自动运行被
测程序,并分析运行结果。总的来说,这种测试方法就是将以人驱动的测试行为转化为机器执
行的一种过程。


2.测试阶段
从阶段上划分,软件测试可以分为单元测试、集成测试和系统测试,系统测试中又包含了
多种不同的测试种类,例如功能测试、性能测试、验收测试、压力测试等。
1.单元测试
主要是对该软件的模块进行测试,通过测试以发现该模块的功能不符合/不满足期望的情
况和编码错误。
由于模块的规模不大,功能单一,结构较简单,且测试人员可通过阅读源程序清楚知道其
逻辑结构,首先应通过静态测试方法,比如静态分析、代码审查等,对该模块的源程序进行分
析,按照模块的程序设计的控制流程图,以满足软件覆盖率要求的逻辑测试要求。另外,也可
采用黑盒测试方法提出一组基本的测试用例,再用白盒测试方法进行验证。若用黑盒测试方法
所产生的测试用例满足不了软件的覆盖要求,可采用白盒法增补出新的测试用例,以满足所需
的覆盖标准。其所需的覆盖标准应视模块的实际具体情况而定。对一些质量要求和可靠性要求
较高的模块,一般要满足所需条件的组合覆盖或者路径覆盖标准。
2.集成测试
集成测试通常要对已经严格按照程序设计要求和标准组装起来的模块同时进行测试,明确
该程序结构组装的正确性,发现和接口有关的问题。在这一阶段,一般采用白盒测试和黑盒测
试结合的方法进行测试,验证这一阶段设计的合理性以及需求功能的实现性。
3.系统测试
一般情况下,系统测试采用黑盒测试,以此来检查该系统是否符合软件需求。本阶段的主
要测试内容包括功能测试、性能测试、健壮性测试、安装或反安装测试、用户界面测试、压力
测试、可靠性及安全性测试等。为了有效保证这一阶段测试的客观性,必须由独立的测试小组
来进行相关的系统测试。另外,系统测试过程较为复杂,由于在系统测试阶段不断变更需求造
成功能的删除或增加,从而使程序不断出现相应的更改,而程序在更改后可能会出现新的问题,
或者原本没有问题的功能由于更改导致出现问题。所以,测试人员必须进行多轮回归测试。系
统测试的结束标志是测试工作已满足测试目标所规定的需求覆盖率,并且测试所发现的缺陷都
第5章 软件工程基础知识 207
已全部归零。
4.性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项
性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,
确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化
情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大
服务级别的测试。
5.验收测试
验收测试是最后一个阶段的测试,是软件产品投入正式交付前的测试工作。和系统测试相
比,验收测试是要满足用户需求或者与用户签订的合同(包括技术协议、技术协调单以及各个
阶段用户参与的评审意见等)的各项要求,此外系统测试是软件开发过程中一项工作,而验收
测试是由用户对要交付软件开展的一种测试工作。验收测试的主要目标是为用户展示所开发出
来的软件符合预定的要求和有关标准,并验证软件实际工作的有效性和可靠性,确保用户能用
该软件顺利完成既定的任务和功能。
通过了验收测试,该产品就可进行发布。但是,在实际交付给用户之后,开发人员是无法
预测该软件用户在实际运用过程中是如何使用该程序的,所以从用户的角度出发,测试人员还
应进行Alpha测试或Beta测试。 Alpha 测试是在软件开发环境下由用户进行的测试,或者模拟
实际操作环境进而进行的测试。 Alpha 测试主要是对软件产品的功能、局域化、界面、可使用性
以及性能等等方面进行评价。而Beta测试是在实际环境中由多个用户对其进行测试,并将在测
试过程中发现的错误有效反馈给软件开发者。
6.其他测试
除了上述各种常规的测试种类之外,近年来由于Web应用和 App 应用的大规模兴起,也出
现了一些新型的测试种类,例如 A B 测试、 Web测试中的链接测试、表单测试等。
(1)AB测试是为Web或 App界面或流程制作两个 (A/B) 或多个 (A/B/n) 版本,在同一
时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集
各群组的用户体验数据和业务数据,最后分析、评估出最好版本,正式采用。
(2)Web测试是软件测试的一部分,是针对Web 应用的一类测试。由于 Web应用与用户直
接相关,又通常需要承受长时间的大量操作,因此Web 项目的功能和性能都必须经过可靠的验
证。通过测试可以尽可能地多发现浏览器端和服务器端程序中的错误并及时加以修正,以保证
应用的质量。由于Web具有分布、异构、并发和平台无关的特性,因而它的测试要比普通程序
复杂得多,包含的测试种类也非常多。
(3)链接测试。链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去
一些未知地址页面的主要手段。链接测试可分为3个方面。首先,测试所有链接是否按指示的
那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证 Web应用系
统上没有孤立的页面。
(4)表单测试。当用户通过表单提交信息的时候,都希望表单能正常工作。如果使用表单
来进行在线注册,要确保提交按钮能正常工作,当注册完成后应返回注册成功的消息。如果使
用表单收集配送信息,应确保程序能够正确处理这些数据,最后能让用户收到信息。要测试这
些程序,需要验证服务器是否能正确保存这些数据,而且后台运行的程序能否正确解释和使用
这些信息。当用户使用表单进行用户注册、登录、信息提交等操作时,必须测试提交操作的完
整性,从而校验提交给服务器的信息的正确性。如果使用默认值,还要检验默认值的正确性。
如果表单只能接受指定的某些值,则也要进行测试。


教程也没说动态测试与白盒测试的关系.
(AI)
动态测试和白盒测试是软件测试中常用的两种测试方法,它们之间有一定的关系,但又有着各自独特的特点。

动态测试是指运行软件程序并观察其在不同输入下的行为,以验证其正确性和健壮性的测试方法。它主要关注软件程序的功能是否符合预期,以及是否存在各种错误和缺陷。动态测试通常通过黑盒测试和灰盒测试来进行,即只关注软件的接口和功能,而不考虑软件的内部实现。

白盒测试是指基于软件程序的内部结构和代码来设计测试用例并进行测试的方法。它主要关注软件程序的内部逻辑是否正确,以及代码是否符合规范和设计要求。白盒测试通常通过代码覆盖率和路径覆盖率等指标来评估测试的完整性和质量。

动态测试和白盒测试之间的关系是相互补充的。动态测试主要验证软件程序的功能是否正确,而白盒测试主要验证软件程序的内部逻辑是否正确。通过结合动态测试和白盒测试,可以全面地检查软件程序的功能和代码质量,提高软件的质量和可靠性。

总的来说,动态测试和白盒测试是软件测试中不可或缺的两种测试方法,它们可以相互结合,提高软件测试的效果和效率

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

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

相关文章

Python编程之调试魔法与列表逆转之谜

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、调试魔法:揭开Python编程的神秘面纱 代码调试实例 二、列表逆转之谜&#…

实验一:通过路由器实现内外网互联

通过路由器实现内外网互联 一、实验拓扑 相关配置详见下图,内网区域为AR2以内设备,外网区域以AR1和PC1代替进行实验测试。 二、实验要求 通过路由器实现内外网互联: 1.各内网PC可自动获取ip地址; 2.各内网PC可ping通外网PC&…

SCSS 基本使用详解

一、引言 SCSS 是 Sass(Syntactically Awesome Stylesheets)的其中一种语法,是一种预处理器脚本语言,能够扩展 CSS 的功能,使其更加强大和高效。SCSS 保留了 CSS 的原有语法,同时增加了变量、嵌套规则、混…

蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现

0x01 产品简介 蓝海卓越计费管理系统是一套以实现网络运营为基础,增强全局安全为中心,提高管理效率为目的的网络安全运营管理系统,提供“高安全、可运营、易管理”的运营管理体验,基于标准的RADIUS协议开发,它不仅支持PPPOE和WEB认证计费,还支持802.1X接入控制技术,与其…

WordPress外贸网站建设的成功要素与技术点

WordPress作为一款强大的建站平台,为外贸企业提供了丰富的功能和灵活的定制选项。在这篇文章中,我们将揭示一些成功建站的秘笈,涵盖了WordPress外贸网站建设中的关键要素和技术点,帮助您打造一个引领行业的成功网站。 1. 选择合适…

【java深入学习第3章】利用 Spring Boot 和 Screw 快速生成数据库设计文档

免费多模型AI网站,支持豆包、GPT-4o、谷歌Gemini等AI模型,无限制使用,快去白嫖👉海鲸AI🔥🔥🔥 在开发过程中,数据库设计文档是非常重要的,它可以帮助开发者理解数据库结构&#xff0…

Kubernetes部署dashboard

Kubernetes部署dashboard Kubernetes集群安装 鲲鹏arm64架构下安装KubeSphere linux安装部署k8s(kubernetes)和解决遇到的坑 dashboard部署 $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashbo…

STM32学习和实践笔记(30):窗口看门狗(WWDG)实验

1.WWDG介绍 1.1 WWDG简介 上一章我们已经介绍了IWDG,知道它的工作原理就是一个12位递减计数器不断递减计数,当减到0之前还未进行喂狗的话,产生一个MCU复位。 窗口看门狗WWDG其实和独立看门狗类似,它是一个7位递减计数器不断的往…

Vue3在Element UI 表格中自定义时间格式化显示

Vue3在Element UI 表格中自定义时间格式化显示 一、前言1、准备工作2、实现步骤1. 引入 Element UI 组件2. 自定义时间格式化函数3. 格式化日期逻辑 3、完整示例4、结论 一、前言 在开发 Web 应用程序时,常常需要在表格中展示时间数据。Element UI 是一个流行的 Vu…

【Python】 如何在Python中创建GUID UUID

基本原理 GUID(全局唯一标识符)和UUID(通用唯一标识符)都是用来在分布式系统中唯一标识信息的。在Python中,我们可以使用内置的uuid模块来生成这些唯一标识符。 UUID有几种不同的版本,每种版本都有其特定…

软考-必须要背的内容

一、设计模式 1、创建型 抽象工厂:提供一个接口,创建一系列的相关相互依赖的对象,无需指定具体的类; eg:系统软件,支持多种数据库 生成器:将一个复杂类的表示与构造相分离,使得相…

Scrapy顺序执行多个爬虫

Scrapy顺序执行多个爬虫 有两种方式: 第一种:bat方式运行 新建bat文件 cd C:\python_web\spiders\tiktokSelenium & C: & scrapy crawl spider1 & scrapy crawl spider2 & scrapy crawl spider3 & scrapy crawl spider4 第二种&a…

IOS开发者证书快捷申请

App Uploader 在进行iOS应用开发中,可以借助appuploader辅助工具进行证书制作、上传和安装测试等操作。首先,您需要访问官方网站获取最新版本的appuploader。最新版本已经优化了与Apple账号的登录流程,无需支付688元,并提供了Windows版和Mac版供用户选择。下载完成后,解压…

USART串口通信(stm32)

一、串口通信 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 STM32F103C8T6 USART资源: USART1、 USART2、 USART3 自带波特率发生器&…

方正畅享全媒体新闻采编系统 binary.do SQL注入漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…

【华三包过】2024年/华三H3C/云计算GB0-713

H3CNE-cloud-云计算-713 想转行 想继续深入 题库覆盖百分百,题库有新版106道新版113道旧版88道 H3C认证云计算工程师(H3C Certified Network Engineer for Cloud,简称H3CNE-Cloud) 认证定位于全面掌握虚拟化技术原理及相关产品/…

半导体行业AI机器视觉的应用探讨(3)-效益如何评估

作为半导体厂的IT经理,评估AI机器视觉带来的经济收益和管理收益是一个多维度的过程,需要综合考虑成本节约、效率提升、质量改进等多个方面。以下是一个具体的评估方案: 1. 成本效益分析(CBA) **步骤**: - **初始投资成本**:列出所有与AI机器视觉系统相关的初始投资,包…

c++二进制输出

输入一个数&#xff0c;输出n个数&#xff0c;数可以是0或1&#xff1b;输入&#xff1a;4输出&#xff1a;0010&#xff1b;提示&#xff1a;本题要用到rand(),srand(time(0));代码如下&#xff1a;#include<bits/stdc.h> #include<windows.h> using namespace s…

MySQL的数据库和表

查看数据库 命令行的方式&#xff1a; cd /mysql/bin mysql.exe -uroot -p IP&#xff08;不是连接自己&#xff09; 端口&#xff08;不是3306&#xff09; show databases; 直接使用图形化界面点击&#xff1a; 查看库里的表 使用命令行查看&#xff1a; 进入mysql数据库 u…

JavaFX学习教程二

一、JavaFX 体系结构 JavaFX 场景图(Scene Graph)是构建 JavaFX 应用程序的起点&#xff0c;一种树状数据结构&#xff0c;用于排列&#xff08;和分组&#xff09;图形对象&#xff0c;以便于逻辑表示。 stage:舞台&#xff0c;操作系统窗口的 JavaFX 表示&#xff0c;是所有…