测试技术体系

目录:

  • 软件测试分类
  • 分层测试体系

 1.软件测试分类

软件测试的分类_安全性测试属于功能测试吗_阿瞒有我良计15的博客-CSDN博客

 

1.单元测试(Unit Testing):单元测试是指对软件的最小可测试单元进行测试,例如一个函数、一个方法或一个模块等。单元测试的主要目的是验证单元的功能是否正常,并且其行为与预期一致。在进行单元测试时,一般会遵循以下原则:

  • 单元测试一般由开发人员自己编写,可以使用各种自动化测试工具、断言库和模拟框架来辅助编写和执行测试。单元测试有助于在开发过程中及时发现并修复代码中的问题,提高代码的质量和可维护性。
  • 测试用例应该覆盖所有重要的执行路径和边界条件,以确保代码的正确性和健壮性。
  • 每个测试用例应该是独立的,不依赖于其他测试用例。
  • 单元测试应该是自动化的,可以运行在一个测试框架或测试运行器中。
  • 单元测试应该是可重复的,即每次运行测试时的结果应该一致。

2.集成测试(Integration Testing):集成测试是指将已经单独测试过的单元组合在一起,并对它们进行整体的测试,验证各个单元之间的接口和交互是否正常。集成测试的主要目的是确保各个单元在集成后能够正确地协同工作,以及检测和修复在集成过程中可能出现的问题。在进行集成测试时,通常需要考虑以下几个方面:

  • 集成测试可以通过自动化测试工具和框架来进行,并且可以结合持续集成和持续交付的实践,使得集成测试能够快速、可靠地执行,并及时发现和修复潜在的问题。
  • 确定集成测试的范围和级别,例如从模块级别到整个系统的级别。
  • 确定测试环境和测试数据,包括模拟外部依赖和构建相应的集成测试环境。
  • 定义集成测试的顺序和流程,以保证相关的依赖先被测试。
  • 编写集成测试用例,验证各个单元之间的接口和交互是否正常。

3.系统测试的主要目标是评估整个软件系统的功能、性能、可靠性、安全性和易用性等方面,以确保系统的质量和可交付性。系统测试的过程包括以下几个关键方面:

  • 需求验证:系统测试的第一步是验证软件系统是否满足用户需求和规格说明书中的要求。测试人员会通过检查需求追踪矩阵或其他相关文档,确保每个需求都被适当地覆盖和验证。

  • 功能测试:在系统测试中,会执行一系列功能测试用例,以验证系统的各个功能是否正常工作。测试人员会模拟用户的使用场景,检查系统的输入、输出、计算和处理是否符合预期,并确保各个功能按照功能规范的要求运行。

  • 性能测试:性能测试旨在评估系统在不同负载条件下的性能特征,如响应时间、吞吐量、并发性和可扩展性等。通过模拟实际使用场景或使用负载测试工具,测试团队可以检查系统的性能是否满足预期,并识别潜在的性能瓶颈或资源消耗问题。

  • 可靠性和稳定性测试:此类测试旨在验证系统在长时间运行和各种异常条件下的可靠性和稳定性。测试人员可以通过模拟断电、网络故障、大数据量和并发等情况,检查系统的错误处理、恢复和容错能力。

  • 安全性测试:安全性测试旨在评估系统的安全特性,并确保系统对潜在的安全风险和威胁有适当的防护措施。测试人员会模拟各种攻击场景,包括身份验证、授权、数据保护和网络安全等方面。

  • 用户界面和易用性测试:在系统测试中,也需要对用户界面进行测试,以确保其易用性和符合用户期望。测试人员会验证界面的设计、布局、导航和交互是否友好、直观和一致。

4.验收测试(Acceptance Testing)是软件开发生命周期的最后一个测试阶段,通常由客户、用户或业务代表进行。其目的是验证软件系统是否满足客户的需求,并决定是否接受交付。

验收测试分为两种类型:功能验收测试(α测试)和用户验收测试(β测试)。

  • 功能验收测试 (α测试) :这是测试人员根据已定义的需求和规格说明进行的测试,以确保软件系统的各个功能是否满足预期。测试人员会执行一系列测试用例,并验证系统的功能是否按照要求正常运行。功能验收测试主要关注系统的功能是否符合规格说明书和客户需求。
  • 用户验收测试 (β测试) :这是由实际的用户或客户代表负责执行的测试,目的是验证软件系统是否满足实际使用环境和用户需求。用户验收测试通常在模拟或生产环境中进行,测试人员会模拟典型的使用场景,并验证系统的易用性、性能、可靠性以及其他用户关注的方面。用户验收测试可以帮助用户评估系统在实际使用中的效果,并提供反馈和意见。

5.白盒测试(White Box Testing):白盒测试是一种基于程序内部结构和逻辑的测试方法。测试人员具有对被测试软件的内部工作原理和代码实现的深入了解。通过白盒测试,测试人员能够检查代码的执行路径、条件覆盖、循环覆盖和数据流覆盖等方面,以验证程序的逻辑正确性和代码质量。白盒测试常用的技术包括语句覆盖、分支覆盖、路径覆盖、条件覆盖和数据流覆盖等。白盒测试适用于对复杂业务逻辑和对代码执行路径的验证。

6.黑盒测试(Black Box Testing):黑盒测试是一种基于软件外部功能和需求的测试方法。测试人员仅关注软件系统的输入和输出,而不涉及内部代码的实现细节。黑盒测试将软件系统视为一个不透明的盒子,测试人员通过定义测试用例和期望输出,来验证系统是否按照预期工作。这种测试方法侧重于功能、性能和安全等用户可观察到的特性。黑盒测试不需要具备代码的知识,因此可以由用户或非技术人员执行。黑盒测试有助于检测功能缺陷、边界条件问题和用户体验相关的问题。

7.灰盒测试(Gray Box Testing):灰盒测试是白盒测试和黑盒测试的结合形式。在灰盒测试中,测试人员具有部分关于系统内部的信息,例如高层次的设计、数据库结构或某些代码段。这样的信息可以帮助测试人员更有针对性地设计测试用例。灰盒测试可以利用白盒测试的技术来测试特定的代码路径或逻辑,同时也可以进行基于用户需求的黑盒测试。灰盒测试旨在结合白盒和黑盒测试的优势,以提高测试效率和测试覆盖率。

8.静态测试(Static Testing):静态测试是在不执行代码的情况下对软件或相关文档进行检查和评估的测试方法。它的目标是发现设计、文档和代码中的缺陷和问题。静态测试可以包括代码审查、需求审查、设计审查和文档审查等。通过静态测试,可以提前发现和修复错误,从而减少在后续测试阶段发现的问题。

9.动态测试(Dynamic Testing):动态测试是在执行软件系统时对其进行验证的测试方法。它关注系统在实际运行中的行为、性能和功能是否符合预期。动态测试包括功能测试、性能测试、安全测试和可靠性测试等。通过动态测试,可以发现系统的缺陷、错误和性能问题,并提供改进建议。

10.手工测试(Manual Testing):手工测试是指由人工进行的测试活动,测试人员通过手动执行测试用例来验证软件系统的功能、性能和用户体验。手工测试可以是黑盒测试,也可以是白盒测试,取决于测试人员的需求和技能。手工测试具有灵活性和直观性,测试人员可以根据实际情况进行测试,并进行实时记录和反馈。

11.自动化测试(Automation Testing):自动化测试是利用专门的软件工具和脚本来执行测试用例的测试方法。通过编写脚本和使用自动化测试工具,可以自动执行重复性、繁琐的测试任务,提高测试效率和一致性。自动化测试可以应用于各种测试类型,包括功能测试、性能测试和回归测试等。

12.冒烟测试(Smoke Testing):冒烟测试是一种简单、基本的测试,用于检查软件系统是否能够进行基本的功能测试,而不是全面测试。通过执行一些基本的测试用例,可以验证系统是否能够启动、运行和基本操作。冒烟测试旨在快速检查系统的稳定性和基本功能,以便在后续测试阶段进行更详细的测试。

13.回归测试(Regression Testing):回归测试是在对软件系统进行修改、更新或修复后重新执行的测试,以确保修改不会导致现有功能的故障或问题。回归测试可以通过执行先前通过的测试用例来验证系统的正确性和稳定性。回归测试旨在防止旧功能在软件修改过程中被破坏,并确保软件系统在更新后仍然可靠。

14.随机测试(Random Testing):随机测试是一种基于随机输入的测试方法。测试人员使用随机生成的输入数据来模拟真实用户的随机操作,并验证系统的稳定性和鲁棒性。随机测试可以帮助发现边界条件错误、异常输入处理问题和潜在的性能或安全漏洞。

15.探索性测试(Exploratory Testing):探索性测试是一种以探索为导向的测试方法,测试人员在无先验计划或测试用例的情况下进行测试。测试人员通过自由探索软件系统的不同方面,发现新的测试情景和错误。探索性测试侧重于发现未知的问题和漏洞,并通过在现场测试过程中学习和适应,提供改进建议和反馈。

 

2.分层测试体系

自动化分层测试体系

  • 70%单元测试
  • 20%服务测试
  • 10%用户界面测试

 

单元测试方法

Java

  • JUnit
  • TestNG

Python

  • unittest
  • pytest

接口测试

  • 接口全称Application Programming Interface,一般称作API
  • 是针对软件对外提供服务的接口的输入输出进行测试
  • 检查接口参数传递的正确性,接口功能实现的正确性输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性

 接口测试方法

  • Charles、Fiddler
  • postman
  • Jmeter
  • loadRunner
  • python: Requests、HttpRunner
  • Java: HttpClient、RestAssured

UI测试

 

UI测试方法

手工方法:

  • 人工查看、操作

自动化方法

  • web: selenium
  • app: appium

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES+Redis+MySQL,这个高可用架构设计

一、背景 会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。 …

macOS Ventura 13.4.1 (22F82) Boot ISO 原版可引导镜像下载

macOS Ventura 13.4.1 (22F82|22F2083) Boot ISO 原版可引导镜像下载 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Wind…

TSception:从EEG中捕获时间动态和空间不对称性用于情绪识别

TSception:从EEG中捕获时间动态和空间不对称性用于情绪识别(论文复现) 摘要模型结构代码实现写在最后 **这是一篇代码复现,原文通过Pytorch实现,本文中使用Keras对该结构进行复现。**该论文发表在IEEE Transactions on…

Spark10-11

10. 广播变量 10.1 广播变量的使用场景 在很多计算场景,经常会遇到两个RDD进行JOIN,如果一个RDD对应的数据比较大,一个RDD对应的数据比较小,如果使用JOIN,那么会shuffle,导致效率变低。广播变量就是将相对…

Spring Boot 如何使用 @ExceptionHandler 注解处理异常消息

Spring Boot 如何使用 ExceptionHandler 注解处理异常消息 在 Spring Boot 应用程序中,异常处理是非常重要的一部分。当应用程序出现异常时,我们需要能够捕获和处理这些异常,并向用户提供有用的错误消息。在 Spring Boot 中,可以…

二叉平衡树之红黑树

目录 1.概念 2.性质 3.节点的定义 4.插入 1.按照二叉搜索树规则插入结点 2.调整颜色 1.uncle存在且为红色 2.uncle不存在或者为黑 cur为 3.根节点改为黑色 5.验证 6.比较 7.应用 1.概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存…

2023年5月青少年机器人技术等级考试理论综合试卷(五级)

青少年机器人技术等级考试理论综合试卷(五级) 分数: 100 题数: 30 一、 单选题(共 20 题, 每题 4 分, 共 80 分) 1.ESP32 for Arduino, 下列程序的运行结果是? ( &#x…

浅谈无线测温系统在高压开关柜中的应用

关注acrelzxz,了解更多详情 摘要:高压开关柜是配电系统中重要的组成部分,其主要作用是控制电荷、分配电能和开断电流等,对维持系统的稳定性有一定的保障作用。将无线测温技术应用于高压开关柜,可以实现对其进行实时的…

校园外卖行业内卷之下,高校外卖创业者如何成为卷王?

伴随着外卖行业的不断发展,校园市场前景广阔。校园外卖市场因各大平台的竞争而变得越来越复杂。各种技术支持和经验参考让大学生创业校园外卖越来越困难,市场竞争也越来越激烈。 校园外卖市场究竟有多内卷? 外卖龙头企业。 校园市场广阔的发…

【高危】crypto-js<3.2.1 存在不安全的随机性漏洞

漏洞描述 crypto-js 是一个 JavaScript 加密库,用于在浏览器和 Node.js 环境中执行加密和解密操作。 crypto-js 3.2.1 之前版本中的 secureRandom 函数通过将字符串 0. 和三位随机整数拼接的格式生成加密字符串,攻击者可通过爆破破解加密字符。 漏洞…

Oracle 查询优化改写(第五章)

第五章 使用字符串 1.遍历字符串 SELECT 天天向上 内容&#xff0c;level&#xff0c;substr(天天向上, LEVEL, 1) 汉字拆分FROM Dual CONNECT BY LEVEL < Length(天天向上);2.计算字符在字符串中出现的次数 3.从字符中删除不需要的字符 若员工姓名有元音字母AEIOU&#x…

RPC远程调用

简介 PRC是一种调用方式而不是一种协议 在本地调用方式时由于方法在同一个内存空间&#xff0c;所以程序中可以直接调用该方法&#xff0c;但是浏览器端和服务端程序是不在一个内存空间的&#xff0c;需要使用网络来访问&#xff0c;就需要使用TCP或者UDP协议&#xff0c;由于…

STM32实现延时

在STM32单片机中&#xff0c;实现延时一般都是使用定时器&#xff0c;既可以使用Systick定时器&#xff0c;也可以使用常规的定时器。 定时器在设置了定时并开启之后&#xff0c;就会进入自主运行模式&#xff0c;其中&#xff0c;初始化设置这一阶段是由CPU执行相应指令完成的…

ubuntu双系统安装

1. 下载系统 国内镜像 http://mirrors.ustc.edu.cn/ubuntu-releases/2. U盘启动盘 Rufus 软件 制作U盘启动盘 Rufus 链接 https://rufus.en.softonic.com/3. 磁盘中准备一定未分配磁盘 我准备了100G 4. BIOS启动项选择为usb启动&#xff08;每个品牌进BIOS不同&#xff0…

Docker 进入容器和交换文件

1、进入容器 有些时候需要进入容器进行操作&#xff0c;使用 docker exec 命令&#xff0c;这个命令后面可以添加很多参数&#xff0c;我们这里只讲添加 -i 和 -it 参数。 只添加 -i 参数时&#xff0c;由于没有分配伪终端&#xff0c;界面没有我们熟悉的 Linux 命令提示…

Kubernetes 和 Prometheus

资源监控系统是容器编排系统必不可少的组件&#xff0c;也是服务治理的核心之一。而 Prometheus 本质上是一个开源的服务监控系统和时序数据库&#xff0c;是 CNCF 起家的第二个项目&#xff0c;目前已经成为 Kubernetes 生态圈中的监控系统的核心。 Prometheus 的核心组件 Pro…

java学习记录之MySql二

1 mysql回顾 1.1 DDL 数据定义语言&#xff1a;结构  数据库database create database 数据库名称 character set 字符集 [collate 比较]; drop database 数据库名称; alter database 数据库名称 character set 字符集 …;  表 create table 表名(字段描述 , … ); 字段描述…

GD32 SPI 查询方式和DMA方式在全双模式下效率区别

最近在使用SPI的时候&#xff0c;遇到了一些数据传输效率问题&#xff0c;在此记录自己学习过程。SPI的基础知识这里就不在讲述了&#xff0c;直接分析SPI查询方式和DMA方式的效率问题。这里使用的芯片是GD32F303CC。 SPI以查询方式进行全双工通信 1.查询手册&#xff0c;SPI…

Spring Cloud Alibaba-全链路灰度设计

文章目录 灰度发布概念灰度发布架构Spring Cloud Alibaba技术架构下的灰度发布实现基础设计HttpHeader设计 Spring Cloud Gateway改造Spring Cloud Gateway实现灰度发布过滤器 后端服务自定义Spring MVC请求拦截器OpenFeign改造自定义Loadbalancer 测试微服务注册元信息修改自定…

在windows11环境下安装CUDA11.6+Anaconda3+pyToach1.13搭建炼丹炉

0.电脑环境 系统&#xff1a;win11 显卡&#xff1a;NVIDIA GTX1650 还有一个pyCharm&#xff0c;其他也用不到了&#xff0c;需要的文章中会进行说明 1.安装CUDA11.6 目前2023.03出来的pyToach2.0是用不到了&#xff0c;因为最低版本支持CUDA11.7。我的显卡是1650&#xff0c…
最新文章