当前位置: 首页 > news >正文

软件工程与计算总结(十九)软件测试

目录

​编辑

一.引言

1.验证与确认

2.目标

3.测试用例

4.桩与驱动

5.缺陷、错误与失败

二.测试层次

1.测试层次的划分

2.单元测试

3.集成测试

4.系统测试

三.测试技术

1.测试用例的选择

2.随机测试

3.基于规格的技术(黑盒测试)

4.基于代码的技术(白盒测试)

5.特定测试技术

四.测试活动

五.测试度量

​编辑


 

一.引言

软件设计的顺序是自顶向下,软件测试的顺序是自底向上~

1.验证与确认

软件测试是软件质量保障的方法之一:

  • 验证:检查开发者是否正确地使用技术建立系统,确保系统能够在预期的环境中按照技术要求正确地运行~
  • 确认:检查开发者是否反建立了正确的系统,确保最终产品符合规格

软件开发的验证与确认主要有两种手段:静态测试与动态设计~

  • 评审是最为常用的静态分析手段
  • 动态测试就是软件测试,它在软件能够运行时,考察软件运行时的表现,完成验证与确认任务的方法

2.目标

  • 向开发者和用户展示软件满足了需求,表明软件产品是一个合格的产品
  • 找出软件中的缺陷和不足

一个关于软测的定义:为评价与改进产品质量、标识产品缺陷和问题而进行的活动

  • 为目标1进行的测试是有效性测试,它使用用户希望的方式来测试软件系统,发现系统的缺陷并进行改进
  • 为目标2进行的测试是缺陷测试,它在软件测试中具有更大的重要性,目标是发现缺陷,只有发现了缺陷的测试才是成功的测试~

发现尽可能多的缺陷的测试才是成功的,这一点是毋庸置疑的~

3.测试用例

测试用例是一组输入数据与预期结果的组合

  • 输入数据:外界接受的数据or系统内部的状态数据
  • 输出结果:数据输出or运行表现

4.桩与驱动

  • 桩程序:被测试部件的交互环境,它扮演被测试部件需要调用的其他系统部件~(只是规格上与其他部件相同,内部实现代码要简单的多)
  • 驱动程序:负责创建被测试部件的执行环境,并驱动和监控被测试部件执行测试用例的过程,判定测试用例的执行结果~

5.缺陷、错误与失败

  • 缺陷:系统代码中存在的不正确的地方
  • 错误:如果系统执行到缺陷,就可能使得执行结果不符合预期且无法预测,表现出来的不稳定状态就称为错误。
  • 失败:错误的发生会使得软件的功能失效

(软件测试的目标是发现缺陷,但实际上发现的是失败~只有对失败进行分析调试才能发现错误并加以修复)

二.测试层次

1.测试层次的划分

通过测试对象测试目标两个维度来划分测试的层次~

2.单元测试

又称为模块测试,是对程序单元(软件设计的最小单位)进行正确性检验的测试工作

  • 在过程化编程中,一个单元就是一个函数与过程
  • 在面向对象编程中,一个单元就是类的一个方法

测试一个程序单元时,需要构建桩程序和驱动程序,将其与其他程序单元隔离~

3.集成测试

(主要采用白盒+黑盒,是为了检验系统功能)

又被称为组装测试,即对程序模块一次性或采用增量方式组织起来,对系统的接口进行正确性检验的测试工作——通常在单元测试之后,系统测试之前进行~

集成测试非常依赖桩程序和驱动程序,常见的集成策略包括大爆炸集成和增量集成,增量集成有自顶向下、自底向上、持续集成等多种方式~

4.系统测试

前两者更加关注技术上的正确性,重在发现设计缺陷和代码缺陷,系统测试更关注不符合需求的缺陷和需求自身的内在缺陷~

系统测试关注整个系统的行为,所以不依赖于桩程序and驱动程序~

三.测试技术

1.测试用例的选择

测试是有代价的(人力、时间、金钱成本),目标是发现尽可能多的缺陷,并不绝对要求发现所有缺陷~

软件测试人员要仔细选择测试用例,在代价尽可能小的情况下发现足够多的缺陷~

2.随机测试

基于软件工程师直觉和经验的技术,也是实践中最为广泛使用的测试技术~

但并不是最优的测试技术,有时可以发现其他技术不能发现的缺陷,但其测试到缺陷的几率却比其他技术要小的多~

3.基于规格的技术(黑盒测试)

把测试对象看做一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性——使用测试对象的规格说明来设计输入和输出数据~

等价类划分:

把程序的输入域划分为若干部分,然后从每一个部分选取少数代表性的个体作为测试用例

  • 有效等价类:对于程序的规格说明来说是合理的、有意义的数据输入构成的集合
  • 无效等价类:与有效等价类的定义正好相反

边界值分析:对前者划分方法的补充——因为错误往往发生在边界而非内部~

决策表:为复杂逻辑判断设计测试用例的技术,决策表由条件声明、行动声明、规划选项和行动选项四个象限组成的表格

状态转换:专门针对复杂测试对象的测试技术,该类复杂测试对象输入数据反应是多样的,还需要依赖自身的状态才能决定,如果测试对象的状态不同,那么即使输入数据是一样的,输出也会有所不同~

4.基于代码的技术(白盒测试)

与黑盒不同,将测试对象看做透明的,不关心测试对象的规格,而根据对象内部的程序结构来设计测试用例进行测试工作~

语句覆盖:保证每一行代码都至少执行一次

(较弱的代码覆盖)

条件覆盖:每个判断结果至少都满足一次

(仍不能保证所有路径的覆盖)

路径覆盖:每条独立路径都至少执行一次

5.特定测试技术

  • 面向对象的测试
  • GUI测试
  • 基于web的测试
  • 基于组件的测试
  • 并发程序的测试
  • 协议遵从性测试
  • 实时系统测试

四.测试活动

  • 测试计划:按照工程的做法,在开始具体的软件测试活动之前,必须明确工作范围等计划
  • 测试设计:进一步明确需要被测试的对象,为被测对象设计用例集合
  • 测试执行:要严格按照测试用例来完成,并记录相应的测试结果
  • 测试评价:执行结束后,必须评价测试结果,以确定测试是否成功

五.测试度量

相关文章:

软件工程与计算总结(十九)软件测试

目录 ​编辑 一.引言 1.验证与确认 2.目标 3.测试用例 4.桩与驱动 5.缺陷、错误与失败 二.测试层次 1.测试层次的划分 2.单元测试 3.集成测试 4.系统测试 三.测试技术 1.测试用例的选择 2.随机测试 3.基于规格的技术(黑盒测试) 4.基于代…...

Tomcat设置IP黑名单和白名单server.xml

方式一&#xff1a; -- 只允许192.168.1.2和192.168.2.3 <Context path"" docBase"xxxAdmin" debug"0" reloadable"true" ><Valve className"org.apache.catalina.valves.RemoteAddrValve" allow"192.168.1.…...

【AI视野·今日NLP 自然语言处理论文速览 第五十五期】Mon, 16 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 16 Oct 2023 Totally 53 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers PromptRE: Weakly-Supervised Document-Level Relation Extraction via Prompting-Based Data Programming Au…...

k8s crd设置额外header

可以通过设置crd.spec.additionalPrinterColumns来实现&#xff1a; apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata:name: crontabs.stable.example.com spec:group: stable.example.comscope: Namespacednames:plural: crontabssingular: cr…...

电容笔好还是触屏笔好?便宜又好用的电容笔推荐

目前有哪些电容笔值得买&#xff1f;相比于之前的电容笔&#xff0c;现在的电容笔增加了很多新的特性功能&#xff0c;例如防误触、避免手指不小心触碰屏幕造成书写错误、笔画粗细可以自由调整等。苹果最初的Pencil现在售价一直高居不下。所以&#xff0c;如果你没有过多的预算…...

列表作为条件查询的参数

<if test"secucodeList ! null and secucodeList.size() > 0">...

elementui中el-select和el-tree实现下拉树形多选功能

实现效果如下&#xff1a; 代码如下&#xff1a; html中 <el-col :lg"12"><el-form-item label"可用单位" prop"useOrgListTemp"><div class"departAll"><el-selectref"selectTree"v-model"valu…...

手机怎么监控电脑?

随着企业对电脑监控需求的增加&#xff0c;越来越多的管理者意识到使用电脑监控电脑的不便性&#xff0c;一旦外出就无法实时查看监控。其实可以用手机实现监控电脑的需求&#xff0c;只需在被监控端安装电脑监控软件后&#xff0c;将电脑设备和员工信息进行绑定&#xff0c;使…...

职场题:有一件特别紧急的事,群众要办理,且联系不上领导,你怎么办?(2)

接1所写 如果无法联系上领导且有一项特别紧急的事情需要办理&#xff0c;以下是进一步的建议&#xff1a; 11. 尝试其他沟通渠道&#xff1a;除了直接联系领导外&#xff0c;尝试通过其他沟通渠道与领导取得联系。这可能包括电子邮件、即时通讯工具或其他内部通信平台。确保详…...

《深入理解java虚拟机 第三版》学习笔记一

第 2 章 Java 内存区域与内存溢出异常 2.2 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些…...

webGL编程指南 第三章 旋转三角形

我会持续更新关于wegl的编程指南中的代码。 当前的代码不会使用书中的缩写&#xff0c;每一步都是会展开写。希望能给后来学习的一些帮助 git代码地址 接着 上一节 接着做平移的转化。本案例是三角形的旋转 <!DOCTYPE html> <html lang"en"><head…...

网络安全是什么?一文认识网络安全

一、网络安全 1.概念 网络安全从其本质上讲就是网络上的信息安全&#xff0c;指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露&#xff0c;系统可靠正常地运行&#xff0c;网络服务不中断。 &#xff08;1&#xff09;基本特征 网络安全根据其本质的界定&#…...

LeetCode 2897. 对数组执行操作使平方和最大【贪心,位运算,哈希表】2301

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

linux加密安全和时间同步

sudo实现授权 添加 vim /etc/sudoers luo ALL(root) /usr/bin/mount /deb/cdrom /mnt/ test ALL(root:ALL) ALL 在所有主机上 提权为root用户&#xff0c; 可以执行所有命令 户"test"被授权以"root"用户身份在任意主机上执行任意命令 切换luo用户使用 su…...

在Go中处理异常

引言 程序遇到的错误大致分为两类:程序员预料到的错误和程序员没有预料到的错误。我们在前两篇关于[错误处理]的文章中介绍的error接口主要处理我们在编写Go程序时预期的错误。error接口甚至允许我们承认函数调用发生错误的罕见可能性&#xff0c;因此我们可以在这些情况下进行…...

rust 全局变量

文章目录 编译期初始化静态常量静态变量原子类型 运行期初始化lazy_staticBox::leak从函数中返回全局变量 标准库中的 OnceCell 编译期初始化 静态常量 const MAX_ID: usize usize::MAX / 2; fn main() {println!("用户ID允许的最大值是{}",MAX_ID); }关键字是co…...

使用Python的qrcode库生成二维码

使用Python的qrcode库生成二维码 此二维码直接跳转对应的网址。 1、首先安装qrcode包 pip install qrcode2、运行代码 import qrcode# 需要跳转的URL url "https://blog.csdn.net/weixin_45092662?typeblog" img qrcode.make(url) img.save("qrcode.png&…...

MSQL系列(四) Mysql实战-索引分析Explain命令详解

Mysql实战-索引分析Explain命令详解 前面我们讲解了索引的存储结构&#xff0c;我们知道了BTree的索引结构&#xff0c;也了解了索引最左侧匹配原则&#xff0c;到底最左侧匹配原则在我们的项目中有什么用&#xff1f;或者说有什么影响&#xff1f;今天我们来实战操作一下&…...

FPGA软件【紫光】

软件&#xff1a;编程软件。 注册账号需要用到企业邮箱 可以使用【企业微信】的邮箱 注册需要2~3天&#xff0c;会收到激活邮件 授权&#xff1a; 找到笔记本网卡的MAC&#xff0c; 软件授权选择ADS 提交申请后&#xff0c;需要2~3天等待邮件通知。 使用授权&#xff1a; 文…...

饲料化肥经营商城小程序的作用是什么

我国农牧业规模非常高&#xff0c;各种农作物和养殖物种类多&#xff0c;市场呈现大好趋势&#xff0c;随着近些年科学生产养殖逐渐深入到底层&#xff0c;专业的肥料及饲料是不少从业者需要的&#xff0c;无论城市还是农村都有不少经销店。 但在实际经营中&#xff0c;经营商…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

数据库——redis

一、Redis 介绍 1. 概述 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的内存键值数据库系统&#xff0c;具有以下核心特点&#xff1a; 内存存储架构&#xff1a;数据主要存储在内存中&#xff0c;提供微秒级的读写响应 多数据结构支持&…...