什么是白盒测试中的静态测试?其包含哪些过程和方法?
文章目录
- 前言
- 一、文档审查
- 二、软件静态分析
- 1.编码规范检查
- 2.软件质量度量
- 三、代码审查与代码走查
- 1.代码审查
- 2.代码走查
- 总结
前言
软件白盒测试中的静态测试是指不运行被测软件,仅通过分析或检查等手段达到检测的目的。在软件白盒测试中,静态测试常通过人工审查软件的详细设计、代码及相关文档,或通过成熟的静态分析软件(依据相应的编码规范或标准)来检测代码,从而达到识别软件潜在的问题和缺陷的目的。
静态测试一般包括:文档审查、软件静态分析(包括编码规范检测、软件质量度量)、代码审查、代码走查等。
一、文档审查
代码编写之前或初期,审查软件的架构和设计文档,检查文档编写是否符合相关行业的模板要求(如军工行业的GJB 438C,或各公司内部体系要求的模板),确保它们的逻辑清晰、可维护且满足软件需求。这有助于在软件开发早期发现并解决潜在的问题。
二、软件静态分析
软件静态分析通常是利用自动化工具来扫描代码,识别常见的编程错误、潜在的安全漏洞、代码复杂度问题等。这些工具可以提供详细的报告和改进建议,帮助开发人员快速定位和解决问题。这其中又可以细分为:编码规范/标准检查、软件质量度量。
1.编码规范检查
编码规范/标准检查,是一种软件工程中常用的技术和方法,它通过工具自动化检查的方法来判断软件代码是否满足某些编码规范/标准。常用的编码规范/标准包括:MISRA C/C++、GJB 8114、AUTOSAR C++等,相关介绍如下:

以Testbed软件为例,进行编码规范/标准检查可参考我之前写的文章《LDRA Testbed软件静态分析_操作指南》;
以C++Test软件为例,进行编码规范/标准检查可参考我之前写的文章《Parasoft C++Test软件静态分析操作指南_编码规范/标准检查》。
2.软件质量度量
软件质量度量是评估软件质量的过程,通常也是通过工具对代码进行自动化检查,涉及一系列指标和量化标准,以确保软件满足其预定的功能、性能、安全性和可靠性要求。常用的软件质量度量项包括:代码注释率、圈复杂度、扇入数、扇出数、调用层级数等。
以Testbed软件为例,进行软件质量度量可参考我之前写的文章《LDRA Testbed软件静态分析_软件质量度量》;
以C++Test软件为例,进行软件质量度量可参考我之前写的文章《Parasoft C++Test软件静态分析操作指南_软件质量度量》。
三、代码审查与代码走查
不管是代码审查还是代码走查,一般都需要一张代码审查/走查单,检查单上会列举一系列的检查项,以便审查/走查工作的开展。以下是一个代码审查单示例:

1.代码审查
代码审查的参与者主要是开发人员(也可以邀请部分测试人员),他们通过对代码的阅读、讲解、讨论,对程序进行静态审查。其基本流程如下:

2.代码走查
代码走查与代码审查类似,区别在于:1、代码走查的参与者不只是开发人员,一般还包括测试人员、系统工程师、项目经理等;2、代码走查不是简单的读程序和对照审查单进行检查,而是让走查人员“充当”计算机,设想出各种测试用例,并假想运行一遍,结合实际用例展开讨论、质疑。
总结
软件白盒测试中的静态测试是一种重要的软件测试方法,它通过对软件设计、体系结构和代码的详细审查,来发现潜在的错误和缺陷。静态测试的优势在于能够早期发现问题、提高代码质量和促进技术交流。在软件开发过程中,将静态测试与动态测试相结合,可以更全面地保障软件质量。
相关文章:
什么是白盒测试中的静态测试?其包含哪些过程和方法?
文章目录 前言一、文档审查二、软件静态分析1.编码规范检查2.软件质量度量 三、代码审查与代码走查1.代码审查2.代码走查 总结 前言 软件白盒测试中的静态测试是指不运行被测软件,仅通过分析或检查等手段达到检测的目的。在软件白盒测试中,静态测试常通…...
搭建一个高并发的Web商品推荐系统,如何涉及软件架构?
搭建一个高并发的Web商品推荐系统,如何涉及软件架构 在搭建一个高并发的Web商品推荐系统时: 微服务架构: 为了支持高并发,我们可以采用微服务架构,将系统拆分成小型、独立的服务,每个服务专注于特定的功…...
今日科技圈最新时事新闻(2024年7月12日
一、智能硬件与电子产品 小米Redmi G Pro 2024游戏本新版本发布 发布时间:7月12日上午10点产品亮点: 搭载英特尔酷睿i7-14650HX处理器,拥有16个核心和24个线程,性能释放高达130W。配备140W满血释放的RTX 4060显卡,提…...
jenkins系列-09.jpom构建java docker harbor
本地先启动jpom server agent: /Users/jelex/Documents/work/jpom-2.10.40/server-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % sh Server.sh start/Users/jelex/Documents/work/jpom-2.10.40/agent-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % ./Agent.…...
构造+贪心,CF 432E,Square Tiling
一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 432E - Codeforces 二、解题报告 1、思路分析 很简单的一个构造题 考虑字典序从左到右从上到下,所以我们正常遍历 对于当前格子如果空闲,那么找到一个能填的最小字符 然…...
【Linux】任务管理
这个任务管理(job control)是用在bash环境下的,也就是说:【当我们登录系统获取bashshell之后,在单一终端下同时执行多个任务的操作管理】。 举例来说,我们在登录bash后,可以一边复制文件、一边查…...
计算机网络——常见问题汇总
1. introduction 1.1 Explain what a communication protocol is and why its important. A communication protocol is a set of rules and conventions(公约) that govern(统治) how data is transmitted and received between devices(设备), systems, or entities in a ne…...
Linux的世界 -- 初次接触和一些常见的基本指令
一、Linux的介绍和准备 1、简单介绍下Linux的发展史 1991年10月5日,赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。新的操作系统是受到另一个UNIX的…...
[AI 大模型] Meta LLaMA-2
文章目录 [AI 大模型] Meta LLaMA-2简介模型架构发展新技术和优势示例 [AI 大模型] Meta LLaMA-2 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yYHlT342-1720705768360)(https://i-blog.csdnimg.cn/direct/9ddc783e01bf48c3bc784a584339003f.jpeg…...
Python3.6.6 OpenCV 将视频中人物标记或者打马赛克或加图片并保存为不同格式
1、轻松识别视频人物并做出标记 需安装face_recongnition与dlib,过程有点困难,还请网上查找方法 import face_recognition import cv2 #镜像源 -i https://pypi.mirrors.ustc.edu.cn/simple # 加载视频 video_file E:\\videos\\1.mp4 video_capture …...
Readiris PDF Corporate / Business v23 解锁版安装教程 (PDF管理软件)
前言 Readiris PDF Corporate / Business 是一款高性能的 OCR(光学字符识别)软件,能够帮助用户将纸质文档、PDF 文件或图像文件转换为可编辑和可搜索的电子文本。该软件提供专业级的功能和特性,非常适合企业和商业使用。使用 Rea…...
.NET MAUI开源架构_2.什么是 .NET MAUI?
1.什么是.NET MAUI? .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET MAUI 是一款…...
认知偏差知识手册
The Connector 每周会选取我从信息流里获取的有价值内容,包括 AI 探索专题、Github 开源库推荐、工具介绍和一些文章书籍等,目标是链接互联网上的优质内容,获得更多的灵感和知识,从而激发彼此的创造力。 AI 探索 主流推理框架在…...
SpringBoot后端代码基本逻辑
数据持久化(Dao---Entity---mapper) 配置(application.yml) server:port: 10086 spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/wiki?useUnicodetrue&characterEnco…...
Python学生信息管理系统的设计与实现
在本篇博客中,我们将深入探讨一个基于Python的简单学生信息管理系统的设计与实现过程。这个系统允许用户执行诸如添加、删除、修改和查询学生信息等操作。我们将逐步解析代码,理解其中的关键概念和编程实践。 1. 系统概述 该系统由几个核心功能组成&am…...
最优雅的PHP框架 Laravel
Laravel 之所以被称为最优雅的 PHP 框架,是因为它在设计和功能上做了很多独特的创新,极大地提高了开发效率和代码的可维护性。以下是 Laravel 受欢迎的主要原因: 良好的文档和社区支持 Laravel 有详尽的官方文档,涵盖了框架的所有功能和用法。此外,Laravel 社区非常活跃…...
log4j2的日志框架(详细,springboot和异步日志的实现)
目录 log4j2的介绍 Log4j2的性能 SpringBoot中的使用Log4j2 log4j2的进阶--异步日志 AsyncAppender方式 AsyncLogger方式 log4j2的介绍 Apache Log4j 2是对Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带 来…...
taocms 3.0.1 本地文件泄露漏洞(CVE-2021-44983)
前言 CVE-2021-44983 是一个影响 taoCMS 3.0.1 的远程代码执行(RCE)漏洞。该漏洞允许攻击者通过上传恶意文件并在服务器上执行任意代码来利用这一安全缺陷。 漏洞描述 taoCMS 是一个内容管理系统(CMS),用于创建和管…...
SpringBoot实战:处理全局异常
1. 导入springmvc依赖 2.定义全局异常处理类 //定义全局异常处理器,可捕获控制层抛出的异常 ControllerAdvice public class GlobalExceptionHandler {//当控制层抛出Exception异常时会被该方法捕获,并执行该方法ExceptionHandler(Exception.class)Res…...
pdf只要前几页,pdf中只要前几页怎么处理
在处理pdf文件时,我们有时只需要其中的一页或几页,而不是整个文档。那么,如何快速且高效地从pdf中提取单独的一页呢?本文将为你揭示几种简单易行的方法,让你轻松实现这一目标。 使用 “轻云处理pdf官网” 打开 “轻云…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
