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

【测试架构师修炼之道】读书笔记

六大质量属性

在这里插入图片描述

效率=性能

测试类型:六种-XX属性转化为XX测试

在这里插入图片描述

产品测试车轮图

在这里插入图片描述

一个软件测试者要从哪些方面(测试类型)用哪些方法(测试方法)去测试产品(质量属性)的关系图

全面性与深度

稳定性测试:多并复异

性能测试:

  • 系统能够正确处理新业务的最大能力,我们也称为"新建"。
  • 系统能够同时正确处理的最大业务能力,我们也称为"并发"。

测试步骤

在这里插入图片描述

测试覆盖

一般来说,在单元测试阶段,我们会主要使用语句覆盖或分支覆盖的方式来设计测试用例;

在集成测试和系统测试阶段,我们会主要使用最小线性无关覆盖;而对其中一些特别重要的部分,使用全覆盖;对一些不那么重要的部分,使使用语句覆盖或分支覆盖。

仅保证流程图中每个路径片段能够被至少执行一次,在这种覆盖策略下得到的最少路径组合,就是最小线性无关覆盖。

归根到底,最小线性无关覆盖也只是一种策略覆盖,从覆盖的角度来说也是有遗漏的。为了让测试更有效,我们可以根据经验再补充一些测试用例,例如:

  • 是否要增加一些需要覆盖的路径?
  • 是否要增加一些测试数据?
  • 有哪些地方是容易出问题的,是否还需要补充一些测试用例?

控制 用例粒度:测试点的拆分与组合

1.测试点:让测试点不要过粗或过细

在这里插入图片描述

2.策略覆盖

3.测试方式

错误推断法:通过缺陷分析

探索式测试:测试思维

基本思想CPIE模型:收集(C)、划分优先级(P)、分析调研(I)、实验(E)

避免集中在缺陷上导致对需求验证的偏离

将测试点作为测试用例进行测试(仅在探索式测试可用)

事实上,测试需要打交道的角色非常多,开发人员、测试人员、领导人员、市场人员、服务人员等。

"对人"意在强调我们在沟通时需要理解你的沟通对象,要学会换位思考,即使是同一件事情,在表达上也需要以对方能够理解的方式来表达。

🌰

需求是否可以测试?需要怎么测试?怎样才算验证通过了?

设计是否可以测试?需要怎么测试?怎样才算验证通过了?

如果你以这样的角度去阅读设计文档,除了关注它在功能上的设计实现,你还会关注它在非功能方面,如性能、可靠性、安全性、易用性、可移植性、可测试性等方面的设计考虑。

测试用例标题

推荐使用的句式:在怎样的条件下,谁,做了,怎样的事情,得到了怎样的结果

状语,主语,谓语,宾语,补语(可选)

·以条件作为用例标题;(更加适用)

·~~以参数作为用例标题。(~~多个参数情况,以参数组合为标题)

测试策略

四步测试策略制定法

在这里插入图片描述

1.明确质量目标

  • 我们的测试目标就是让产品在发布的时候能够满足事先约定的质量目标
  • 围绕产品质量目标进行刚刚好的测试
  • 将目标-行为-评估形成闭环

2.进行风险分析

提前识别项目中可能存在哪些会阻塞测试的风险,然后基于风险来调整测试策略

基于风险来加强和降低测试投入

  • 对高风险的部分加强测试投入。
  • 对低风险的部分降低测试投入。

3.适配"产品研发流程"

在这里插入图片描述

4.进行"测试分层"

在这里插入图片描述

产品质量评估模型特质

综上,一个优秀的产品质量评估模型,应该具备如下特质:

  • 多维度:能够覆盖质量评估的各个纬度,能够帮助评估者全面分析和考虑。
  • 定量+定性:指标和分析相结合,能够有效避免在只有指标的情况下,被"绕"过去,变得形同虚设。
  • 过程+结果:不仅评估测试的结果,还对过程进行分析和评估。

在这里插入图片描述

  1. 测试覆盖度评估:对测试范围及测试的深度与广度进行分析和评估。/需求和实现

  2. 测试过程评估:对测试过程和测试的投入情况来进行分析与评估。/测试用例

  3. 缺陷分析:对测试结果进行分析和评估。

    缺陷密度是指每千行代码发现的缺陷数。

    (引入阶段)对其他几类缺陷年龄,我们的期望是:

    • 没有继承或历史遗留引入的缺陷。
    • 没有新需求或变更引入的缺陷。
    • 没有缺陷修改引入的缺陷。

按照上述测试策略,我们希望的缺陷触发因素图包含的测试方法和对应的测试内容大致为:

  • 功能测试-单运行正常输入:进行基本功能测试,覆盖业务流程的基本路径测试时发现的问题。
  • 功能测试-单运行边界值测试:进行配置测试时发现的问题。
  • 功能测试-多运行相互作用:进行基本功能测试,覆盖业务流程的基本路径和配置测试时发现的问题
  • 性能测试:进行满规格测试时发现的问题。

风险识别

识别方法

在这里插入图片描述

风险识别清单

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

风险评估:确定风险的优先级

在这里插入图片描述

风险评估

需求:高

设计:缺陷

流程类(涉及规范、历史类):高

风险应对

应对种类

在风险管理中,风险应对主要分为如下4种:

  1. 回避风险:指主动避开损失发生的可能性。
  2. 转移风险:指通过某种安排,将自己面临的风险全部或部分转移给其他一方。
  3. 减轻风险:指采取预防措施,以降低损失发生的可能性和影响程度。
  4. 接受风险:指自己理性或非理性地主动承担风险。

"风险应对"举例:新需求在开发过程中不断被增加

"回避风险"的做法:置之不理。

"转移风险"的做法:将新需求外包。

"减轻风险"的做法:寻求额外资源或裁剪其他优先级低的需求。

"接受风险"的做法:将新需求加入项目范围,通过加班来完成我新需求。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

老功能分析

差异性分析沟通提纲

缺陷分析

进行遗留缺陷分析需要考虑的主要内容包括:

  1. 缺陷对用户的影响程度。
  2. 缺陷发生的概率。
  3. 缺陷风险评估和规避措施。

测试总体框架

在这里插入图片描述

以测试对象-测试方法-测试结果这样的方式来描述测试目标的好处是:强调了这个版本测试的要求,比数字指标更易于被测试团队理解和执行。

缺陷的改动越大,越需要尽早解决。

如果缺陷涉及需求、方案、设计,需要尽早解决。

·优先解决缺陷严重程度为"致命"和"严重"的缺陷。

缺陷回归

  1. 考虑回归功能范围
  2. 功能回归
  3. 自动化回归
    1. 先对需要多次执行的测试用例进行自动化。
    2. 优先自动化简单的、可靠的功能。

关于自动化率

自动化率需要与自动化工具、自动化技术和自动化平台以及研发能力匹配,不要盲目追求自动化率。

版本测试策略需要关注的所有内容

  1. 测试范围和计划相比的偏差。
  2. 本版本的测试目标。
  3. 需要重点关注的内容。
  4. 测试用例的选择。
  5. 测试执行顺序。
  6. 试探性的测试策略。
  7. 接收测试策略。
  8. 回归测试策略。
  9. 探索式测试策略。
  10. 自动化测试策略。

相关文章:

【测试架构师修炼之道】读书笔记

六大质量属性 效率性能 测试类型:六种-XX属性转化为XX测试 产品测试车轮图 一个软件测试者要从哪些方面(测试类型)用哪些方法(测试方法)去测试产品(质量属性)的关系图 全面性与深度 稳定性测试:多并复异 性能测试: 系统能够正确处理新业…...

C++ Functor仿函数

Functor 对象模拟函数 把类对象,像函数名一样使用。 仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现 一个 operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 operator() 语法格式 clas…...

【EI会议征稿通知】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

重要信息 会议官网:www.icbase.org(查看详情) 中文主页:【往届会后3个月检索】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)_艾思科蓝_学术一站式服务平台 会议时间:2024年9月2…...

微信小程序多端框架实现app内自动升级

多端框架生成的app,如果实现app内自动升级? 一、Android 实现app自动升级,华为应用市场 1、获取 应用市场地址 下载地址 2、在微信开放平台进行配置 应用下载地址:应用市场点击分享,里面有一个复制连接功能 应用市…...

C# Log4Net应用

1 需求分析 日志记录是程序开发中必不可少的环节,对于bug调试和后期项目维护都十分重要.其中Log4net是C#环境下广泛使用的日志记录库,功能十分强大.本教程提供的日志记录需求如下 1,日志文件统一保存到项目启动目录下的logs文件夹 2,以天为单位进行日志…...

pytest8.x版本 中文使用文档-------32.示例:使用自定义目录收集器

默认情况下,pytest 使用pytest.Package来收集包含 __init__.py 文件的目录,使用 pytest.Dir来收集其他目录。如果你想要自定义目录的收集方式,你可以编写自己的pytest.Directory 收集器,并使用 pytest_collect_directory钩子来连接…...

c语言第七天笔记

作业题: 设计TVM(地铁自动售票机)机软件。 输入站数,计算费用,计费规则,6站2元,7-10站3元,11站以上为4元。 输入钱数,计算找零(找零时优先找回面额大的钞票)&#xff0…...

软件测试经理工作日常随记【8】-UI自动化_加密接口的传输

软件测试经理工作日常随记【8】-UI自动化_加密接口的传输 工具类 #utils_api.py class RequestUtils:classmethoddef send_request_splicing(cls, dicts, url): # 对应请求的入参及请求的函数Logger.logger_in().info(-----------------{}接口开始执行-----------------.for…...

基于FPGA的出租车计费系统设计---第一版--郝旭帅电子设计团队

欢迎各位朋友关注“郝旭帅电子设计团队”,本篇为各位朋友介绍基于FPGA的出租车计费系统设计—第一版 功能说明: 收费标准(里程):起步价5元,包括三公里;三公里之后,每公里2元&#x…...

商汤联合建工社共同打造“住建领域法规标准知识大模型”

近日,商汤科技与中国建筑出版传媒有限公司(下称“建工社”)共同发布“住建领域法规标准知识大模型”,共同探索新型知识服务模式。大模型聚焦建筑行业,以商汤“日日新SenseNova 5.5”大模型体系为基础,结合海…...

基于STM32的智能交通监控系统教程

目录 引言环境准备智能交通监控系统基础代码实现:实现智能交通监控系统 车辆检测模块交通流量分析模块通信与网络系统实现用户界面与数据可视化应用场景:交通管理与优化常见问题与解决方案收尾与总结 引言 随着城市化进程的加快,交通拥堵问…...

Git和TortoiseGit的安装与使用

文章目录 前言一、Git安装步骤查看版本信息 二、TortoiseGit安装中文语言包TortoiseGit 配置不同语言 Git基本原理介绍及常用指令 GitLab添加TortoiseGIT生成SSH Key 前言 Git 提供了一种有效的方式来管理项目的版本,协作开发,以及跟踪和应用文件的变化…...

改进YOLOv5:加入非对称卷积块ACNet,加强CNN 的内核骨架,包含VOC对比实验

🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…...

论文解读(12)-Transfer Learning

这个也是看论文的时候看到的,但是对这方面不是理解,需要对这方面知识点进行一个补充。 参考: 迁移学习概述(Transfer Learning)-CSDN博客 1. 什么是Transfer Learning? Transfer Learning就是迁移学习&…...

力扣高频SQL 50题(基础版)第三十八题

文章目录 力扣高频SQL 50题(基础版)第三十八题1484.按日期分组销售产品题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第三十八题 1484.按日期分组销售产品 题目说明 表 Activities: ---…...

大模型下的视频理解video understanding

数据集 Learning Video Context as Interleaved Multimodal Sequences Motivation: 针对Narrative videos, like movie clips, TV series, etc.:因为比较复杂 most top-performing video perception models 都是研究那种原子动作or人or物 understandin…...

【网络安全】CR/LF注入+Race Condition绕过MFA

未经许可,不得转载。 文章目录 漏洞1:CR/LF注入前言正文漏洞2:Race Condition绕过MFA前言正文漏洞1:CR/LF注入 前言 ExaHub(此处为虚拟名称)是一个专为 Exa 编程语言的爱好者和专业人士量身定制的平台。Exa 语言以其出色的速度和性能而闻名,广泛应用于科学计算、机器学…...

深度学习入门——卷积神经网络

本章的主题是卷积神经网络(Convolutional Neural Network,CNN)。CNN被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础。本章将详细介绍CNN的结构,并用Python实…...

快团团供货大大团长帮卖团长如何线上结算和支付货款?

一、如何支付结算单? 团长在快团团小程序【我的供货商】—【结算单】—【待支付】中,找到需要支付的结算单,点击【去支付】即可。 当有多笔结算单待支付时,团长可筛选供货商和日期找到需要支付的结算单,点击【去批量…...

vite vue3 Webstorm multiple export width the same name “default“

系统格式不一样,导致代码文件格式冲突导致的,解决方法找到对应的文件,将文件类型切换成LF。...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...