软件测试之测试分类

1. 为什么要对软件测试进行分类

软件测试是软件⽣命周期中的⼀个重要环节,具有较⾼的复杂性,对于软件测试,可以从不同的⻆度
加以分类,使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试
的分类⽅法


2. 按照测试目标分类

  1. 界面测试
  2. 功能测试
  3. 性能测试
  4. 安全性测试
  5. 易用性测试

上述在之前的文章中有提及;


2.1 可靠性测试

在这里插入图片描述

可靠性最好要达到 99.99%;

  • 4个9:
  • 3652460*0.9999 = 52557(可用时间min)
    525600 - 52557 = 53 (即一年)

3. 按照执行方式分类

3.1 静态测试

所谓静态测试(statictesting)就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档
中可能存在的错误的过程。

SonarQube很多企业都在用的静态扫描工具

3.2 动态测试

动态测试(dynamictesting),指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果
和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运
行程序。

大部分软件测试工作都属于动态测试


4. 按照测试方法分类

4.1 白盒测试

白盒测试又称为结构测试或逻辑测试,它一般用来分析程序的内部结构,针对程序的逻辑结构来设计
测试用例进行测试。

在这里插入图片描述

4.1.1 语句覆盖

每个语句至少执行一次

  • 示例:
if A and Bthen action1
if C or Dthen action2		
A: T    B:T
C:T	D:T;C:T	D:F;C:F	D:T;//只有这样才能保证每条语句都执行一次

4.1.2 判定覆盖

在该案例中 if 就是判定语句
if 语句:既要测试为T也要测试为F

在这里插入图片描述

4.1.3 条件覆盖

在这里插入图片描述

4.1.4 判定条件覆盖

在这里插入图片描述

4.1.5 条件组合覆盖

在这里插入图片描述

4.1.6 路径覆盖

在这里插入图片描述


总结:

  • ⽩盒测试主要应⽤于单元测试阶段
  • 先执⾏静态设计⽤例的⽅法,再执⾏动态设计测试⽤例的⽅法
  • 设计⽤例⼀般使⽤路径测试,重点模块追加使⽤逻辑覆盖⽅法

4.2 黑盒测试

又称为数据驱动测试,只注重功能测试,不关心具体怎么实现(系统测试)

⿊盒测试⽤到的测试⽅法有,等价类,边界值,因果图,场景法,错误猜测法等

优点:

  1. 不需要了解程序内部的代码以及实现,不关注软件内部的实现。
  2. 从用户角度出发设计测试用例,很容易的知道用户会用到哪些功能,会遇到哪些问题,锻炼测试人员的产品思维
  3. 测试用例是基于软件需求开发文档,不容易遗漏软件需求文档中需要测试的功能。

缺点:

  • 不可能覆盖所有代码。

4.3 灰盒测试(开发人员使用)

结合了白盒测试和黑盒测试,但又不完全复制

但是,灰盒测试没有⽩盒测试详细和完整,⿊盒测试是覆盖产品范围最⼴的测试,因此灰盒测试基本是不能够替代⿊盒测试,否则需要很⼤的代价,设计⾮常多的⽤例。

  • 常见面试问题: 你知道的测试⽅法有哪些?哪种⽤的⽐较多?

    常⻅的测试⽅法有⿊盒测试,⽩盒测试和灰盒测试。开发⼈员主要⽤⽩盒测试和灰盒测试,测试⼈员主要⽤⽩盒测试和⿊盒测试。对于测试⼈员来说,相较于⽩盒测试,⿊盒测试⽤的更多⼀些。

5. 按照测试阶段分类

5.1 单元测试

最小单元,“最小单元”是人为规定的,主要采⽤⽩盒测试⽅法,从被测对象的内部结构出发设计测试⽤例

到底怎么才算“最小单元”呢,最小单元实际是认为定义的,一个方法,一个类都可以理解为“最小单元”

  • 测试阶段:编码后或者编码前(TDD)
  • 测试对象:最小模块
  • 测试人员:白盒测试工程师或开发工程师
  • 测试依据:代码和注释+详细设计文档
  • 测试方法:白盒测试
  • 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
public class Main {public static void bubbleSort(int[] arr) {int n = arr.length;for (int i = 0; i < n; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}public static void main(String[] args) {Test01();Test02();Test03();Test04();}private static void Test01() {int[] act_array1 = {64, 34, 25, 12, 22, 11, 90};int[] expect_array1 = {11, 12, 22, 25, 34, 64, 90};bubbleSort(act_array1);System.out.println("Test01结果:" + (Arrays.equals(act_array1, expect_array1) ? "通过" : "不通过"));}private static void Test02() {int[] act_array1 = {1, 2, 3, 4, 5};int[] expect_array1 = {1, 2, 3, 4, 5};bubbleSort(act_array1);System.out.println("Test02结果:" + (Arrays.equals(act_array1, expect_array1) ? "通过" : "不通过"));}private static void Test03() {int[] act_array1 = {};int[] expect_array1 = {};bubbleSort(act_array1);System.out.println("Test03结果:" + (Arrays.equals(act_array1, expect_array1) ? "通过" : "不通过"));}private static void Test04() {int[] act_array1 = {1, 4, 29, 12, 12, 9};int[] expect_array1 = {1, 1, 9, 12, 12, 29}; // 注意这里存在期望值错误bubbleSort(act_array1);System.out.println("Test04结果:" + (Arrays.equals(act_array1, expect_array1) ? "通过" : "不通过"));}
}

5.2 集成测试

在这里插入图片描述

5.3 系统测试

对通过集成测试的系统进⾏整体测试,验证系统功能性和⾮功能性需求的实现。

  • 测试阶段:集成测试通过之后
  • 测试对象:整个系统(软、硬件)
  • 测试⼈员:⿊盒测试⼯程师
  • 测试依据:需求规格说明⽂档
  • 测试⽅法:⿊盒测试
  • 测试内容:功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等

5.3.1 冒烟测试

冒烟测试的对象是每⼀个新编译的需要正式测试的软件版本,⽬的是确认软件主要功能和核⼼流程正常,在正式进⾏系统测试之前执⾏。冒烟测试⼀般在开发⼈员开发完毕后提交给测试⼈员来进⾏测试时,先进⾏冒烟测试,保证基本功能正常,不阻碍后续的测试。

5.3.2 回归测试

回归测试是指修改了旧代码后,重新进⾏测试以确认修改没有引⼊新的错误或导致其他代码产⽣错误。

即所有的页面所有功能测试完整之后要整体再回归一遍。

5.4 验收测试(交付测试)

⽤⼾在选择汽⻋的过程中也会对⻋外观以及性能等⽅⾯进⾏校验(验收测试)

6. 是否手工测试

6.1 手工测试

⼿⼯测试就是由⼈去⼀个⼀个的输⼊⽤例,然后观察结果,和机器测试相对应,属于⽐较原始但是必须的⼀个步骤。
另一个则是自动化测试

7. 按照实施组织划分

⼤型通⽤软件,在正式发布前,通常需要执⾏Alpha和Beta测试

7.1 α 测试

α测试⼜叫内测或者叫a测,其实都是⼀个涵义

α测试通常是公司内部的⽤⼾在模拟实际操作环境下进⾏的测试。α测试的⽬的是评价软件产品的FLURPS(即功能、可使⽤性、可靠性、性能和⽀持)。 α测试不能由程序员或测试员完成。

7.2 β 测试

β测试⼜叫公测或者叫b测

β测试由软件的最终⽤⼾们在⼀个或多个场所进⾏,这⾥就可以理解为,β测试是正式⽤⼾中的⼀部分,他们在任意的场合来使⽤软件,⽬的是为了发现软件是否存在⼀系列的问题

α测试与β测试的区别:

  1. 测试的场所不同: α测试是在公司内部进⾏测试的,但是β测试是在⽤⼾环境下进⾏测试的 α测试的环境是受开发⽅控制的,⽤⼾的数量相对⽐较少,时间⽐较集中。β测试的环境是不受开发 ⽅控制的,⽤⼾数量相对⽐较多,时间不集中。
  2. 测试执⾏时机不同: α测试先于β测试执⾏。通常是α测试通过后,在进⾏β测试
  3. 测试持续时间⻓短不同: α测试时间没有β测试持续时间⻓

7.3 第三方测试

第三⽅软件测试是指由独⽴的第三⽅公司或组织进⾏的软件测试活动。

8. 按照测试地域划分

般会将测试划分为国际化测试和本地测试

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

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

相关文章

Devops CI/CD

Devops CI/CD DevOps 中的 CI/CD&#xff1a;持续集成与持续部署的深度解析一、CI/CD 基本概念&#xff08;一&#xff09;持续集成&#xff08;二&#xff09;持续部署 二、CI/CD 实施步骤&#xff08;一&#xff09;版本控制&#xff08;二&#xff09;自动化构建&#xff08…

leetcode105为什么可以root.left可以截取到前序遍历二叉树的(0,index),而不是(1,index+1)

这里以105前序和中序遍历构造二叉树为例&#xff0c;106同理 原因在于preoder.shift()会改变原数组&#xff0c;已经把preoder的第一个队头元素已经排除出去了&#xff01;&#xff01;&#xff01; 306题中的截取后续遍历中用pop&#xff08;&#xff09;同理

数据结构---堆栈和列

一、堆栈 1.栈堆&#xff1a;具有一定操作约束的线性表&#xff1b;&#xff08;只在一端做插入删除&#xff09; 2.栈的顺序存储结构&#xff1a; 由一个一维数组和一个记录栈顶元素位置的变量组成。定义方式如下&#xff1a; 3.入栈操作&#xff1a; 注意&#xff1a;&…

golang快速上手基础语法

变量 第一种&#xff0c;指定变量类型&#xff0c;声明后若不赋值&#xff0c;使用默认值0 package mainimport "fmt"func main() {var a int //第一种&#xff0c;指定变量类型&#xff0c;声明后若不赋值&#xff0c;使用默认值0。fmt.Printf(" a %d\n"…

【idea代码ai插件】利用接入硅基流动的deepseekR1的api在idea里实现问答,辅助写代码

注册硅基流动账号 https://siliconflow.cn/zh-cn/ 然后新建api密钥&#xff0c;这里的api密钥可以点击复制&#xff0c;等会输入要用 可以看到现在新注册是有额度的&#xff0c;你们应该是14元 模型广场这里可以调用deepseek的v3和r1&#xff0c;注意因为是蹭&#xff0c;赠…

NO.42十六届蓝桥杯备战|数据结构|算法|时间复杂度|空间复杂度|STL(C++)

数据结构 什么是数据结构 在计算机科学中&#xff0c;数据结构是⼀种数据组织、管理和存储的格式。它是相互之间存在⼀种或多种特定关系的数据元素的集合。 说点通俗易懂的话&#xff0c;数据结构就是数据的组织形式&#xff0c;研究的就是把数据按照何种形式存储在计算机中 …

【CSS3】化神篇

目录 平面转换平移旋转改变旋转原点多重转换缩放倾斜 渐变线性渐变径向渐变 空间转换平移视距旋转立体呈现缩放 动画使现步骤animation 复合属性animation 属性拆分逐帧动画多组动画 平面转换 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#x…

Keepalived高可用架构实战:从安装配置到高级应用详解

一.架构 用户空间核心组件&#xff1a; vrrp stack&#xff1a;VIP 消息通信checkers&#xff1a;监测 Real Serversystem call&#xff1a;实现 vrrp 协议状态转换时调用相关本地功能SMTP&#xff1a;邮件组件IPVS wrapper&#xff1a;生成 IPVS 规则Netlink Reflector&…

Linux:利用System V系列的-共享内存,消息队列实现进程间通信

对于管道的进程间通信方式&#xff0c;需要频繁的调用系统调用(read,write)。而我们今天首先要介绍的共享内存&#xff0c;在开辟好空间之后&#xff0c;便可以跳过系统调用&#xff0c;直接进行读写操作。 一.System V共享内存(主要) 共享内存区是最快的IPC形式。一旦这样的内…

不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析

题目A&#xff1a;日期统计 思路分析&#xff1a; 本题的题目比较繁琐&#xff0c;我们采用暴力加DFS剪枝的方式去做&#xff0c;我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串&#xff0c;但是还是会存在19月的情况&#xff0c;为此还需要在CHECK函数…

宇树人形机器人开源模型

1. 下载源码 https://github.com/unitreerobotics/unitree_ros.git2. 启动Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 这个错误通常出现在虚拟机环境中运行需要OpenGL支持的应用…

【C/C++算法】从浅到深学习--- 前缀和算法(图文兼备 + 源码详解)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章将使用八道题由浅到深的带你了解并基本掌握前缀和思想&#xff0c;以及前缀和的基…

脑电:时域分析(任务态)

时域分析&#xff1a;时间序列&#xff08;时域信号&#xff09; EEG和ERP都是时间序列 ERP&#xff1a;事件诱发的电位是随着时间变化 组水平&#xff1a;需要这一组的个体不能差异性太大。 提值的指标&#xff0c;选取平均幅值确定成分的显著情况 mean(EEG.data,3): 在第…

【C语言】自定义类型:结构体,联合,枚举(下)

前言&#xff1b;上一期我们侧重讲了一个非常重要的自定义类型结构体&#xff0c;这一期我们来说说另外两种自定义类型&#xff1a;联合&#xff0c;和枚举。 传送门&#xff1a;自定义类型&#xff1a;结构体&#xff0c;联合&#xff0c;枚举(上) 文章目录 一&#xff0c;联…

数组的介绍

1.数组的概念 数组是一组相同类型元素的集合&#xff0c;从这个描述中我们知道&#xff1a; 数组中存放1个或多个数据&#xff0c;但是数组的元素个数不为0。数组中存放的多个数据&#xff0c;类型是相同的。 数组分为一维数组和多维数组&#xff0c;多维数组一般比较多见的…

蓝桥杯 17110抓娃娃

问题描述 小明拿了 n 条线段练习抓娃娃。他将所有线段铺在数轴上&#xff0c;第 i 条线段的左端点在 li&#xff0c;右端点在 ri​。小明用 m 个区间去框这些线段&#xff0c;第 i个区间的范围是 [Li​, Ri​]。如果一个线段有 至少一半 的长度被包含在某个区间内&#xff0c;…

linux ptrace 图文详解(二) PTRACE_TRACEME 跟踪程序

目录 一、基础介绍 二、PTRACE_TRACE 实现原理 三、代码实现 四、总结 &#xff08;代码&#xff1a;linux 6.3.1&#xff0c;架构&#xff1a;arm64&#xff09; One look is worth a thousand words. —— Tess Flanders 一、基础介绍 GDB&#xff08;GNU Debugger&…

记录致远OA服务器硬盘升级过程

前言 日常使用中OA系统突然卡死&#xff0c;刷新访问进不去系统&#xff0c;ping服务器地址正常&#xff0c;立马登录服务器检查&#xff0c;一看磁盘爆了。 我大脑直接萎缩了&#xff0c;谁家OA系统配400G的空间啊&#xff0c;过我手的服务器没有50也是30台&#xff0c;还是…

电网电压暂态扰动机理与工业设备抗失压防护策略研究

什么是晃电&#xff1f; 国标GB/T 30137-2013 中定义:工频电压方均根值突然降至额定值的90%~10%&#xff0c;持续时间为10ms~1min后恢复正常的现象。Acrel8757V 晃电的原因 1.系统侧因素 短路故障&#xff1a;雷击、线路接地、设备误碰等导致电网短路&#xff0c;故障点电压…

Linux监控网络状态

一、基本介绍 1、基本语法 netstat [选项] 2、常用选项 选项 说明 -a 显示所有连接和监听的套接字&#xff08;包括TCP、UDP&#xff09;。 -t 显示 TCP 连接。 -u 显示 UDP 连接。 -l 显示正在监听的套接字&#xff08;server端&#xff09;。 -n 显示数字格式的…