软件质量保证——软件测试流程

笔记内容及图片整理自XJTUSE “软件质量保证” 课程ppt,仅供学习交流使用,谢谢。

对于软件测试中产品/服务/成果的质量,需要细化到每个质量特性上,因此出现了较为公认的软件质量模型,包括McCall质量模型、ISO/IEC 9126质量模型等。

软件质量模型

McCall质量模型

具有归属于3个方面的11个质量因子,并通过多对多的关系与23个质量标准相关联。

产品操作方面:正确性、可靠性、有效性、完整性、易用性

产品修复方面:可维护性、易测性、适应性

产品转变方面:可移植性、可重用性、互操作性

McCall模型中一次性改进所有质量因子并不现实,因为部分质量因子之间是负相关的,例如改善易用性常常会降低系统效率。

ISO/IEC 9126质量模型

具有6类质量特性,并能分解为20个质量子特性,质量特性与子特性间是一对多关系。

功能性:合适性、准确性、互操作性、安全性

可靠性:成熟性、容错性、可恢复性

易用性:易懂性、易学性、可操作性

有效性:时间行为、资源利用

可维护性:可分析性、可变性、稳定性、易测性

可移植性:适应性、可安装性、共存性、替换性

与考虑内部质量的McCall模型相比,ISO/IEC 9126模型强调对用户可见的属性。

软件测试角色

软件测试工作通常需要多名不同类型的测试人员,测试任务独立于开发任务。本教材采用了统一软件开发过程RUP的划分方法。RUP的目标是支持在可预测时间和可预测预算内生产满足最终的用户需求的高质量软件,它将不同类型的测试人员划分为四类角色:测试经理、测试分析师、测试设计师、测试员。

测试经理

测试经理对整个测试工作负责,包括明确测试任务与目标、制定测试计划、安排测试人员、协调测试工作所需的各类资源,目的是解决测试过程中碰到的各类问题。

测试分析师

测试分析师分析被测软件的特征,明确并细化测试目标,设计、执行、分析测试用例结果,编写软件缺陷报告。

测试设计师

测试设计师负责定义测试方法并保证测试工作的顺利进行,测试设计师本质还是开发人员,目的是开发通用测试基础框架,尽可能保证被测软件可测性。

测试员

测试员负责测试工作的执行,将测试用例用于被测软件并记录测试结果,测试员是测试工作的执行者,对自动化测试能否成功起重要作用。

RUP测试流程

RUP测试流程具有较高的代表性,不仅适合迭代式软件开发,经过改造还能适合其他模型。RUP测试流程描述了测试经理、测试分析师、测试设计师、测试员这四类测试角色的任务与职责,具体包括6个主要环节:定义评估任务、测试与评估、完成验收任务、验证测试方法、确认构建稳定性和改进测试资产。

定义评估任务

定义评估任务是测试团队开展具体测试工作前的第一步,主要目标是确定测试工作的重点,对于每次迭代来讲,该环节的主要任务包括:

1)明确具体的测试工作目标

2)制定详细的测试工作计划

3)确定合适的资源使用策略

4)确定测试工作的范围与边界

5)给出将要采用的测试方法

6)明确如何监督与评估测试过程

定义评估任务考虑测试团队的高层目标,需要测试经理、测试分析师、测试设计师的参与。

对于每次测试来说,测试团队的工作目标包括:

1)发现尽可能多的缺陷

2)评估软件质量

3)检查是否与规格说明书一致

4)检查与现有同类产品是否一致

5)最小化维护成本和用户投诉

6)检查软件是否满足用户期望

测试计划

测试团队根据测试目标为被测软件制定较详细的测试计划,从而基于该测试计划来合理安排每位测试人员的工作。

制定测试计划时应考虑被测软件的特征、测试团队的人员组成、测试周期、测试目标等因素,明确规定测试工作的范围、方法、资源、进度,明确责任人的任务,评估可能存在的风险。测试工作范围不完全等同于开发工作范围,由于软件开发多采用迭代模式,每次迭代后测试目标会发生变化。

测试方法

测试方法也称测试策略,旨在确定将要具体使用的测试技术,从而完成预期测试工作。好的测试方法包括多样化、风险为中心、产品特定、实际可行、可解释的五个方面。

多样化——采用多种测试技术以增加发现各类软件缺陷的概率

风险为中心——由于穷尽性测试不现实,以风险为中心测试尽可能降低风险

产品特定——不同产品具有不同特征面临不同风险,因而要选择特定的技术组合

实际可行——测试方法不能超过时间、预算、资源、员工能力等实际的限制

可解释的——测试方法需要能够自我解释清楚以得到团队认可

测试与评估

测试与评估的目标是使测试工作达到合适的广度和深度,从而能够对每个测试项进行充分的评估。对于每个测试周期,该环节聚焦如何达到可接受的广度和深度,这是整个测试周期中最为核心的环节,主要参与角色是测试分析师和测试员。

测试

选择合适的测试技术来匹配测试方法,典型测试技术包括用户测试、易用性测试、UI测试。

用户测试——站在用户角度进行测试,重点关注执行测试的人

易用性测试——执行测试来检验软件是否易于使用,重点关注软件易用性和用户体验

UI测试——测试软件界面以判断它是否符合期望标准,重点关注测试的内容是否符合预期

测试需要考虑以下5个维度:

1)测试者:谁执行测试工作

2)内容:要测试什么

3)问题:测试哪类问题

4)活动:如何测试

5)评估:如何判断测试用例是否通过

评估

每个测试周期,测试人员都需要对每个测试项进行检验和评估,记录必要信息并对可能存在风险的区域提供反馈。测试员的主要工作是执行测试用例并记录结果,发现问题后填写缺陷报告,缺陷报告质量的高低决定该缺陷被修复的概率。

由于测试工作与开发工作相互独立,开发人员往往不愿意修复报告出来的缺陷,测试人员可采用以下方式激励开发人员:

1)强调缺陷的严重性

2)指出缺陷会影响很多用户使用

3)表示修复缺陷很有挑战性

4)表达领导对于缺陷的重视

5)说明竞争对手由于该缺陷产生大量损失


随测试

跟随测试是一种探索性测试,有助于开发人员理解缺陷并加快缺陷的修复,跟随测试的思想是在发现失效后继续进行测试以发现缺陷的所有影响,它包括以下4类:

1)改变测试行为

2)改变选项和配置

3)改变运行环境

4)改变测试数据

完成验收任务

完成一个测试周期的工作后需对测试工作进行总结,评估软件质量,检验软件产品是否满足当前迭代目标。对于每个测试周期,完成验收任务的工作包括:

1)优化测试用例集

2)给出针对测试发现问题的解决方案

3)客观评价软件质量

4)检查测试周期内质量回归问题,即多少已修复的缺陷再次出现

5)为项目团队其他成员提供专业信息

其他环节

验证测试方法

验证测试方法是确定测试方法是否可行,是否满足项目限制,是否达到既定覆盖率,其主要参与者是测试设计师和测试经理。为了使得测试方法可行,可能需要通过增加软件可见性、采用基于组件的架构、使用仿真器等设备三种方法以增加软件的可测试性。

确认构建的稳定性

确认构建的稳定性是确认构建足够稳定从而值得进行后续的测试,有助于及时阻止不合适的测试工作从而减少浪费,其主要参与者是测试员。在实际项目中,构建稳定性测试通常采用以自动化测试为主,手工测试为辅的模式。

改进测试资产

改进测试资产目的是在后续测试周期甚至其他软件项目中尽可能地复用资产。由于测试过程中测试人员花费了许多时间费用开发测试思想、方法、用例、脚本、自动化测试框架、配置等资产,实现有效的重用能带来很大收益。

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

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

相关文章

代码美学2:MATLAB制作渐变色

效果: %代码美学:MATLAB制作渐变色 % 创建一个10x10的矩阵来表示热力图的数据 data reshape(1:100, [10, 10]);% 创建热力图 figure; imagesc(data);% 设置颜色映射为“cool” colormap(cool);% 在热力图上添加边框 axis on; grid on;% 设置热力图的颜色…

从0开始学PHP面向对象内容之常用设计模式(组合,外观,代理)

二、结构型设计模式 4、组合模式(Composite) 组合模式(Composite Pattern)是一种结构型设计模式,它将对象组合成树形结构以表示”部分–整体“的层次结构。通过组合模式,客户端可以以一致的方式处理单个对…

femor 第三方Emby应用全平台支持v1.0.54更新

femor v1.0.54 版本更新 mpv播放器增加切换后台和恢复时隐藏状态栏的功能修复服务器首页因为连接超时异常的问题 获取路径:【femor 历史版本收录】

如何搭建一个小程序:从零开始的详细指南

在当今数字化时代,小程序以其轻便、无需下载安装即可使用的特点,成为了连接用户与服务的重要桥梁。无论是零售、餐饮、教育还是娱乐行业,小程序都展现了巨大的潜力。如果你正考虑搭建一个小程序,本文将为你提供一个从零开始的详细…

nrm镜像管理工具使用方法

nrm(NPM Registry Manager)是一款专门用于管理 npm 包镜像源的命令行工具。在使用 npm 安装各种包时,默认会从官方的 npm 仓库(registry)获取资源,但有时候由于网络环境等因素,访问官方源可能速…

OpenCV截取指定图片区域

import cv2 img cv2.imread(F:/2024/Python/demo1/test1/man.jpg) cv2.imshow(Image, img) # 显示图片 #cv2.waitKey(0) # 等待按键x, y, w, h 500, 100, 200, 200 # 示例坐标 roi img[y:yh, x:xw] # 截取指定区域 cv2.imshow(ROI, roi) cv2.waitKey(0) cv…

易速鲜花聊天客服机器人的开发(下)

目录 “聊天机器人”项目说明 方案 1 :通过 Streamlit 部署聊天机器人 方案2 :通过 Gradio 部署聊天机器人 总结 上一节,咱们的聊天机器人已经基本完成,这节课,我们要看一看如何把它部署到网络上。 “聊天机器人”…

STM32笔记(串口IAP升级)

一、IAP简介 IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级。 通常实…

斐波那契堆与二叉堆在Prim算法中的性能比较:稀疏图与稠密图的分析

斐波那契堆与二叉堆在Prim算法中的性能比较:稀疏图与稠密图的分析 引言基本概念回顾Prim算法的时间复杂度分析稀疏图中的性能比较稠密图中的性能比较|E| 和 |V| 的关系伪代码与C代码示例结论引言 在图论中,Prim算法是一种用于求解最小生成树(MST)的贪心算法。其性能高度依…

使用argo workflow 实现springboot 项目的CI、CD

文章目录 基础镜像制作基础镜像设置镜像源并安装工具git下载和安装 Maven设置环境变量设置工作目录默认命令最终dockerfile 制作ci argo workflow 模版volumeClaimTemplatestemplatesvolumes完整workflow文件 制作cd argo workflow 模版Workflow 结构Templates 定义创建 Kubern…

BUUCTF—Reverse—不一样的flag(7)

是不是做习惯了常规的逆向题目?试试这道题,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一个’字符串‘,考验眼力的时候到了! 注意:得到的 flag 请包上 f…

insmod一个ko提供基础函数供后insmod的ko使用的方法

一、背景 在内核模块开发时,多个不同的内核模块,有时候可能需要都共用一些公共的函数,比如申请一些平台性的公共资源。但是,这些公共的函数又不方便去加入到内核镜像里,这时候就需要把这些各个内核模块需要用到的一些…

LangGraph中的State管理

本教程将介绍如何使用LangGraph库构建和测试状态图。我们将通过一系列示例代码,逐步解释程序的运行逻辑。 1. 基本状态图构建 首先,我们定义一个状态图的基本结构和节点。 定义状态类 from langgraph.graph import StateGraph, START, END from typi…

MATLAB中Simulink的基础知识

Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。 Simulink提供一个动态系统建模、仿真和…

最小生成树-Prim与Kruskal算法

文章目录 什么是最小生成树?Prim算法求最小生成树Python实现: Kruskal算法求最小生成树并查集 Python实现: Reference 什么是最小生成树? 在图论中,树是图的一种,无法构成闭合回路的节点-边连接组合称之为…

关闭AWS账号后,服务是否仍会继续运行?

在使用亚马逊网络服务(AWS)时,用户有时可能会考虑关闭自己的AWS账户。这可能是因为项目结束、费用过高,或是转向使用其他云服务平台。然而,许多人对关闭账户后的服务状态感到困惑,我们九河云和大家一起探讨…

Could not locate device support files.

报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…

Linux文件基础

目录 一、文件类型 二、文件权限 三、权限修改 Linux中一切皆文件,文件目录分布呈树状数据结构,/是根目录,目录的源头 一、文件类型 类型字符说明普通-Linux中最多的一种文件类型,包括 纯文本文件(ASCII)、二进制文件(binary…

自然语言处理基础之文本预处理

一. NLP介绍 1957年, 怛特摩斯会议 二. 文本预处理 文本预处理及作用 将文本转换成模型可以识别的数据 文本转化成张量(可以利用GPU计算), 规范张量的尺寸. 科学的文本预处理可以有效的指导模型超参数的选择, 提升模型的评估指标 文本处理形式 分词 词性标注 命名实体识别…

外卖点餐系统小程序

目录 开发前准备 项目展示项目分析项目初始化封装网络请求 任务1 商家首页 任务分析焦点图切换中间区域单击跳转到菜单列表底部商品展示 任务2 菜单列表 任务分析折扣信息区设计菜单列表布局请求数据实现菜单栏联动单品列表功能 任务3 购物车 任务分析设计底部购物车区域添加商…