第12章 软件测试基础(第三部分)测试类型、测试工具

七、测试类型(按工程阶段划分)

单集系确收

(一)单元测试

1、单元测试/模块测试

  • 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。
  • 主要依据是模块的详细设计文档
  • 价值在于尽早发现程序的一些问题,降低后期缺陷修复代价。
  • 采用白盒、黑盒测试技术等进行,主要看测试需求。
  • 单元测试可由开发和测试工程师共同完成。
  • 针对软件程序模块进行正确性检验的测试工作

2、测试内容

测试内容

  • 单元测试主要是关注单元是否实现规定的功能,单元的逻辑是否正确,输入输出是否正确
  • 局部数据:测试在单元内的数据结构是否保持完整
  • 模块接口:模块接口既要调用其它接口,也要接受其它接口。
  • 独立路径信息无关的路径。是指在程序中至少引用了一个新的处理语句的集合,或者一个新条件的任意一条路径。
  • 出错处理:单元在运行过程中发生差错时单元是否能有效处理差错,避免程序崩溃。
  • 边界条件:对单元边界进行测试,确定单元边界是否正常。

(二)集成测试/组装测试/联合测试

1、概念

  • 在单元测试基础上,将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。主要是发现单元接口之间可能存在的问题。
  • 概要设计阶段考虑如何进行集成测试
  • 单元测试考虑各个单元内部有无问题,集成测试验证将各个单元之间合起来之后能否达到上一级设计的功能要求。
  • 集成测试需要提交文档:集成测试计划、集成测试规格说明、集成测试分析报告
  • 检验程序单元或部件的接口关系,即针对软件体系结构的构造进行的测试

2、方式

  • 一次性组装
    非增值式组装方式/整体拼装
    首先对每个模块分别进行模块测试,把所有模块组装在一起进行测试,最终得到所求的软件系统。
    优点:节省工时、人力
    缺点:当发现问题时很难定位发生问题的地方

  • 增值性组装
    渐增式组装
    首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大系统,组装中边连接边测试,最后通过增值逐步组成软件系统。
    包括自顶向下的增值方式(主干模块先暴露问题)自底向下的增值方式(最常出错的底层模块先暴露问题)、混合增值式方式(前两种的结合)

3、内容

  • 各模块连接时,穿越模块接口的数据是否丢失
  • 一个模块的功能是否会对另一个模块的功能产生不利影响
  • 各个子功能组合,能否达到预期要求的父功能
  • 全局数据结构是否有问题
  • 单个模块的误差累积是否会放大

4、完成标志

  • 成功执行测试计划中所规范的所有集成测试
  • 修正所有错误
  • 测试结果通过专门小组评审

5、桩模块/驱动模块

  • 桩模块:底层的模块。模拟调用模块功能的模块。也叫存根模块。用以代替所测模块调用的子模块。模块可以做少量的数据操作,不需要把子模块的所有功能都带进来,但不允许什么事情也不做。
  • 驱动模块:模拟上一级模块调用测试模块的模块。相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。

(三)系统测试

1、概念

  • 发现软件与系统定义不符合或与之矛盾的地方
  • 集成整个系统元素(包括硬件、外设、网络和系统软件、支持平台等)
  • 目的是验证最终软件系统是否满足用户规定的需求
  • 为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试

2、内容

  • 按照需求规格说明书逐一验证系统的质量特性
    功能测试
    健壮性测试:容错能力;恢复能力

3、典型测试

  • 恢复测试:主要检查系统的容错能力
  • 安全测试:验证系统内部的保护机制
  • 压力测试:通常用于测试应用程序或系统在高负载、高压力情况下的性能和稳定性。(异常访问量、频率或数据量)

(四)确认测试/有效性测试

  • 验证软件的功能和性能以及其他特性是否与用户要求一致,由开发方组织
  • 主要内容:以规格说明书为主来开展、确认软件有效性;做软件配置的复查工作
  • 进行有效性测试 <— 黑盒测试
  • 软件配置复查
  • 检验与证实软件是否满足软件需求说明书中规定的要求

(五)验收测试

  • 用户为主
  • 一般使用生产中的实际数据进行测试
  • 决定是否接收或拒收系统
  • 按照项目任务书或合同、约定的验收依据文档等进行的整个系统的测试与评审,决定是否接收或拒收系统。

八、测试类型(按执行代码划分)

(一)动态测试

需要运行代码去发现错误。

1、黑盒测试法

2、白盒测试法

3、灰盒测试法

  • 介于黑白盒之间
  • 既考虑程序内部结构和逻辑,又考虑功能

(二)静态测试

不需要运行程序,通过人为审查程序发现错误。

1、代码审查

2、代码走查

九、测试类型(按实施主体划分)

(一)开发方测试

  • 开发方 开发环境下
  • Alpha测试
  • 指在软件开发完后,开发方要对提交的软件进行全面的自我检查与验证,它可以队软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。

(二)用户测试

  • 用户 用户应用环境下
  • Beta测试
  • 用户通过运行和使用软件,检测与验证软件是否符合自己预期的要求

(三)第三方测试

  • 第三方
  • 技术、财务、管理等独立于开发方、用户方的第三方组织
  • 独立测试

十、测试类型(按关联代码划分)

集成测试阶段采用黑盒和白盒测试相结合的方法

(一)白盒测试

  • 逻辑和结构
    白盒测试
  • 结构测试/逻辑驱动测试/基于代码的测试
  • 白盒测试把软件视为一个透明的盒子,盒子中程序的每一步如何进行分支、如何进行控制、数据如何流动……
  • 基于程序内部的结构、逻辑来设计测试用例

(二)黑盒测试

  • 功能
    黑盒测试
  • 功能测试/基于规格说明书的测试/基于数据驱动的测试
  • 不透明的黑色盒子,不清楚内部程序的结构和逻辑
  • 从用户角度去考虑产品的功能、特性并验证
  • 主要用于集成测试和确认测试阶段

十一、测试类型(按质量特性划分)

质量特性

十二、测试类型(按符合性情况划分)

(一)符合性测试

测试软件有没有符合相关的要求。

1、先决条件

  • 符合性准则文件(标准、合同等)
  • 就绪的软件(软件所有项均为可用状态、文档)
  • 软件的系统元素

十三、测试类型(回归测试)

(一)软件有变动的情况

软件发生变动时需要进行回归测试。

1、对缺陷修复
  • 首先验证缺陷是否正确修复
  • 然后测试缺陷修复可能影响到的功能是否正确
2、对新增功能
  • 验证新功能的正确性
  • 测试可能受到影响的其他功能
3、对删减功能
  • 检测是否影响到保留的功能

十四、软件测试工具

JMeter

  • JMeter:是一个性能测试工具,同loadrunner类似,他功能较多,我们常用的功能是用imeter模拟多浏览器对网站做压力测试。

LoadRunner

  • LoadRunner:是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并评估系统性能。

JTest

  • JTest:是一个综合的发展广泛的实践证明,以提高开发团队的工作效率和软件质量的自动化测试解决方案。侧重于实践验证的Java代码和应用程序,无缝集成Parasoft的SOAtest以使最终结束今天的复杂的,分布式的应用和交易的功能和负载测试。

  • JBuilder:是一个可视化JAVA开发工具。它是在Java2平台上开发商业应用程序、数据库、发布程序的优秀工具。

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

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

相关文章

下载源代码并交叉编译riscv FreeBSD系统和内核

RISCV系统曾经让人神秘到无法接触&#xff0c;交叉编译更是只有耳闻&#xff0c;现在随着RISCV的普及&#xff0c;它们神秘的面纱已经被慢慢揭开。 交叉编译作为RISCV系统中的一个重要环节&#xff0c;也随着RISCV的普及而变得更加容易理解和操作。交叉编译允许开发者在一个平…

人工智能|机器学习——强大的 Scikit-learn 可视化让模型说话

一、显示 API 简介 使用 utils.discovery.all_displays 查找可用的 API。 Sklearn 的utils.discovery.all_displays可以让你看到哪些类可以使用。 from sklearn.utils.discovery import all_displays displays all_displays() displays Scikit-learn (sklearn) 总是会在新版本…

【doghead】mac与wsl2联通

uv 构建ok zhangbin@zhangbin-mbp-2  ~/tet/Fargo/zhb-bifrost/Bifrost-202403/worker/third_party/libuv   main 看一下mac的网络情况 zhangbin@zhangbin-mbp-2  ~/tet/Fargo/zhb-bifrost/Bifrost-202403/worker/third_party/libuv   main  <

leetcode-括号生成-101

题目要求 思路 1.左括号的数量等于右括号的数量等于n作为判出条件&#xff0c;将结果存到res中 2.递归有两种&#xff0c;一种是增加左括号&#xff0c;一种是增加右括号&#xff0c;只要左括号的数量不超过n&#xff0c;就走增加左括号的递归&#xff0c;右括号的数量只要小于…

迅饶科技 X2Modbus 网关 AddUser 任意用户添加漏洞复现

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

使用Nuxt3框架搭建基础项目

Nuxt3安装 基础配置: Node.js** - v18.0.0版本以上 , 可以结合fnm工具切换node版本 安装nuxt3命令 打开vscode或者控制台去到项目文件夹输入: npx nuxilatest init <project-name> 国内执行这行代码&#xff0c;即使科学上网也会有问题 ⚠️ 安装Nuxt3报错 安装过程…

学习《现代密码学——基于安全多方计算协议的研究》 第二章

目录 第2章 数学基数 2.1 预备知识 2.1.1 素数 2.1.2 模运算 2.1.3 群 【定义2-2】&#xff08;群的定义&#xff09; 【定义2-3】&#xff08;交换群&#xff09; 【定义2-4】&#xff08;单位元&#xff09; 【定义2-5】&#xff08;逆元&#xff09; 【定义2…

如何更好地使用Kafka? - 故障时解决

要确保Kafka在使用过程中的稳定性&#xff0c;需要从kafka在业务中的使用周期进行依次保障。主要可以分为&#xff1a;事先预防&#xff08;通过规范的使用、开发&#xff0c;预防问题产生&#xff09;、运行时监控&#xff08;保障集群稳定&#xff0c;出问题能及时发现&#…

学成在线 - 第3章任务补偿机制实现 + 分块文件清理

7.9 额外实现 7.9.1 任务补偿机制 问题&#xff1a;如果有线程抢占了某个视频的处理任务&#xff0c;如果线程处理过程中挂掉了&#xff0c;该视频的状态将会一直是处理中&#xff0c;其它线程将无法处理&#xff0c;这个问题需要用补偿机制。 单独启动一个任务找到待处理任…

自动化机器学习——获得函数

自动化机器学习——获得函数 在自动化机器学习中&#xff0c;获得函数是一种用于优化算法的工具&#xff0c;它负责计算并返回待优化问题的值或梯度。本文将介绍获得函数的定义、作用、常用的获得函数&#xff0c;并通过Python实现示例代码来演示其效果&#xff0c;并最后进行…

最强特征点检测算法 DeDoDe v1/v2

论文地址v1:https://arxiv.org/pdf/2308.08479 论文地址v1:https://arxiv.org/pdf/2404.08928 代码地址:GitHub - Parskatt/DeDoDe: [3DV 2024 Oral] DeDoDe 🎶 Detect, Dont Describe --- Describe, Dont Detect, for Local Feature Matching 实测确实牛X! DeDoDeV1 关…

JAVA语言开发的(智慧校园系统源码)智慧校园的痛点、智慧校园的安全应用、智慧校园解决方案

一、智慧校园的痛点 1、信息孤岛问题&#xff1a;由于校园内各部门或系统独立开发&#xff0c;缺乏统一规划和标准&#xff0c;导致数据无法有效整合和共享&#xff0c;形成了信息孤岛。 2、技术更新与运维挑战&#xff1a;智慧校园的建设依赖于前沿的信息技术&#xff0c;如云…

网络网络层之(4)IPv4协议

网络网络层之(1)IPv4协议 Author: Once Day Date: 2024年4月4日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的…

mysql workbench如何导出insert语句?

进行导出设置 导出的sql文件 CREATE DATABASE IF NOT EXISTS jeesite /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTIONN */; USE jeesite; -- MySQL dump 10.13 Distrib 8.0.28, for Win64 (x86_64) -- -- Host: 127.0…

【算法刷题 | 贪心算法09】4.30(单调递增的数字)

文章目录 16.单调递增的数字16.1题目16.2解法&#xff1a;贪心16.2.1贪心思路16.2.2代码实现 16.单调递增的数字 16.1题目 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的…

基于Tornado开发高性能多人在线麻将游戏

(超清)基于Tornado开发高性能多人在线麻将游戏 基于Tornado开发高性能多人在线麻将游戏可以按以下步骤进行&#xff1a; 1.项目规划和设计&#xff1a; 确定游戏的功能和要求&#xff0c;包括用户登录、游戏大厅、匹配系统、实时游戏、聊天功能等。 设计游戏的数据模型和逻…

C语言——每日一题(轮转数组)

一.前言 前不久学习了时间复杂度的概念&#xff0c;便在力扣上刷了一道需要参考时间复杂度的题——轮转数组 https://leetcode.cn/problems/rotate-array/submissions这道题不能使用暴力算法&#xff0c;因为这道题对时间复杂度的要求不能为O&#xff08;N^2&#xff09;。因…

基于svm的手写数字识别程序介绍(matlab)

1、程序界面介绍 该程序GUI界面包括手写板、手写数字可视化&#xff08;原图&#xff09;、对图像进行灰度处理&#xff08;灰度图&#xff09;、图像二值化处理&#xff08;二值化&#xff09;、图像特征可视化&#xff08;HOG特征&#xff08;方向梯度直方图&#xff09;&…

Java进阶06List集合泛型

Java进阶06 集合 一、集合及其体系结构 集合是一个长度可变的容器 1、集合的体系结构 1.1 单列集合 单列集合使用add()方法添加集合元素&#xff0c;一次只能添加一个元素。 单列集合均实现了Collection接口&#xff0c;该接口还有两个子接口List和Set。 List接口 List集合…

文件各种上传,离不开的表单 [html5]

作为程序员的我们&#xff0c;经常会要用到文件的上传和下载功能。到了需要用的时候&#xff0c;各种查资料。有木有..有木有...。为了方便下次使用&#xff0c;这里来做个总结和备忘。 利用表单实现文件上传 最原始、最简单、最粗暴的文件上传。 前端代码&#xff1a; //方…