《软件测试》[Ron Patton](一)-软件测试背景、软件开发过程、软件测试基础

news2024/12/23 23:10:56
  • 《软件测试(原书第2版)》作者: [美] Ron Patton 这本书是软件测试入门的经典书籍。
  • 我在刚入行时,也读过这本书,受益匪浅。
  • 并且即使是工作了这么多年,再回头看这本书,会发现怎么都逃不出这本书的范围。
  • 这个系列是这本书的读书笔记,摘抄书中重要的部分,也会写一些心得。

这篇文章对应的原书部分已上传到了本人运营公众号【软件测试必备技能】,有需要可以搜索公共号名称,或是点击文章底部的二维码前往领取~
(资源仅供学习和分享,莫要用于商用)

文章目录

  • 一、软件测试背景
    • (1)软件失败的术语
    • (2)软件缺陷的官方定义
    • (3)为什么会出现软件缺陷
    • (4)软件缺陷的修复费用(成本)
    • (5)软件测试员究竟做些什么
    • (6)优秀的软件测试员应具备的素质
  • 二、软件开发过程
    • (1)软件产品需要的投入
    • (2)软件产品由哪些部分组成
    • (3)软件项目成员
    • (3)软件开发生命周期模式
  • 三、软件测试基础(原理)
    • (1)测试原则
    • (2)软件测试的术语和定义
    • (3)黑盒测试和白盒测试
    • (4)静态测试和动态测试

一、软件测试背景

(1)软件失败的术语

  • 在不同环境下要用不同的术语描述软件失败时的现象。这里给出一些例子:
    • 缺点(defect)
    • 故障(fault)
    • 问题(problem)
    • 错误(eror)
    • 事件 (incident)
    • 偏差 (variance)
    • 失败(failure)
    • 矛盾 (inconsistencv)
    • 特殊(feature)
    • 缺陷(bug)
  • 虽然描述软件缺陷的术语这么多,但实际在工作中,根据公司实际情况,该怎么称呼就怎么称呼。

(2)软件缺陷的官方定义

  • 至少满足下列5个规则之一,才称作发生了一个软件缺陷,即bug:
    1. 软件未实现产品说明书要求的功能。
    2. 软件出现了产品说明书指明不应该出现的错误。
    3. 软件实现了产品说明书未提到的功能。
    4. 软件末实现产品说明书虽未明确提及但应该实现的目标,
    5. 软件难以理解、不易使用、运行缓慢或者从测试员的角度看——最终用户会认为不好
  • 可见产品说明书,即需求文档对一个缺陷的定义尤为重要。

(3)为什么会出现软件缺陷

  • 产品说明书(需求文档)是大部分缺陷产生的罪魁祸首。
    • 在许多情况下,需求没有写、或是需求不够全面、经常更改,或者整个开发小组没有很好地沟通。
    • 为软件做计划是极其重要的,如果没做好,软件缺陷就会出现。
  • 软件缺陷的第二大来源是设计,是程序员规划软件的过程。这里产生软件饮陷的原因与产品说明书是一样的一一随意、易变、沟通不足。

(4)软件缺陷的修复费用(成本)

  • 从开始到计划、编程、测试,到公开使用的过程中,都有可能发现软件缺陷。
  • 越早发现bug,越早修复bug,修复费用就越低,成本就越低。

(5)软件测试员究竟做些什么

  • 软件测试员主要做的就是提高软件的质量:
    1. 软件测试员的目标是发现软件缺陷。
    2. 软件测试员的目标是尽可能早地找出软件缺陷。
    3. 软件测试员的目标是尽可能早地找出软件缺陷,并确保其得以修复。

(6)优秀的软件测试员应具备的素质

  • 下面是大多数软件测试员应具备的素质:
    • 他们是群探索者。
    • 他们是故障排除员。
    • 他们具有创造性。
    • 他们是群追求完美者。
    • 他们注重策略和外交。
    • 他们善于说服。
  • 除了这些素质外,在软件编程方面受过教育也很重要。

二、软件开发过程

(1)软件产品需要的投入

  • 客户需求
  • 产品说明书
  • 进度表
  • 软件设计文档(结构文档、数据流图、状态转换图、流程图、代码注释)
  • 测试文档(测试计划、测试用例、缺陷报告、测试工具和自动测试、度量统计和总结)

(2)软件产品由哪些部分组成

  • 当产品发包分发时,不仅仅分发的是代码,许多支持也包含在内。由于所有这些部分客户要查看或使用,所以也需要测试。下面的清单可以对软件产品不仅限于代码这点有个初步印象:
    • 帮助文件
    • 用户手册
    • 样本和示例
    • 标签和不干胶
    • 产品支持信息
    • 图标和标志
    • 错误信息
    • 广告和宣传材料
    • 说明文件
    • 安装
  • 注意这本书发行的时间已经比较早了,软件发生了形态的变化,上面的清单可能已经不需要测试了。软件测试的工作重心也大部分放到了代码测试上。

(3)软件项目成员

  • 主要人员及其职责:
    • 项目经理,程序经理或者监制人员自始至终驱动整个项目。他们通常负责编写产品说明书、管理进度、进行重大决策。
    • 体系架构师或者系统工程师是产品小组中的技术专家。他们一般经验丰富,可以胜任设计整个系统的体系架构或软件。他们的工作与程序员关系紧密。
    • 程序员、开发人员或者代码制作者设计、编写软件并修复软件中的缺陷。他们与项目经理和设计师密切合作制作软件,然后与项目经理和测试员密切合作修复缺陷。
    • 测试员或质量保证(Quality Assurance,QA)员负责找出并报告软件产品的问题。他们与开发小组全部成员在开发过程中密切合作,进行测试并报告发现的问题。第21章“软件质量保证”完整地讲述了软件测试和软件质量保证任务的差别。
    • 技术作者、用户协助专员、用户培训专员、手册编写员或者文案专员编制软件产品附带的文件和联机文档。
    • 配置管理员或构建员负责把程序员编写的代码及技术作者写的全部文档资料组合在一起,合成为一个软件包。
  • 注意现在的软件项目团队已经与之前的组成成员不太一样:
    • 项目经理、架构师、程序员、测试还是存在;
    • 配置管理员、文案专员可能呢已经不存在,或是是被其他人员替代;
    • 而相较之前,也有一些新的岗位,比如运营、市场、运维、美术等

(3)软件开发生命周期模式

  • 以下是4种最常用的模式,其他模式只是这些的形式变化而已:
    • 大爆炸模式:大爆炸模式的优点是简单。计划、进度安排和正规开发过程几乎没有,所有精力都在开发软件和编写代码上。
    • 边写边改模式:边写边改模式是项目小组在未刻意采用其他开发模式时默认的开发模式。这是在大爆炸模式基础上更进了一步,至少考虑到了产品需求。
    • 瀑布模式:采用瀑布模式的项目从最初的构思到最终产品要经过一系列步骤。每一个步骤结束项目小组组织审查,并决定是否进入下一步。
      • 关于瀑布模式有三点需要强调:瀑布模式非常强调产品的定义;瀑布模式各步骤是分立的、没有交叉;瀑布模式无法回溯。一旦进入某一个步骤,就要完成该步骤的任务。
    • 螺旋模式:螺旋模式的总体思想是一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。

三、软件测试基础(原理)

(1)测试原则

  1. 测试程序是不可能的
  2. 软件测试是有风险的行为,决定不去测试所有的情况,那就是选择了冒险。
  3. 测试无法显示潜伏的软件缺陷,可以报告缺陷存在,却不能报告缺陷不存在。
  4. 找到的软件缺陷越多,就说明软件缺陷越多。
  5. 软件测试越多,对测试的免疫力越强。
  6. 并非所有缺陷都要修复
  7. 缺陷的定义有时可能是难以说清的,可以与多方共同探讨指定最适合项目的标准。
  8. 产品说明书从没有最终版本
  9. 软件测试员在产品小组中不受欢迎,因为总是带来坏消息。
    (其实随着行业对测试工作的认可度越来越高,这一点已经是很难感受到了)
  10. 软件测试是一项讲究条理的技术专业。

(2)软件测试的术语和定义

  • 精确和准确(书里的这张图可以很好的说明这两个词的区别,软件测试要的精度很大程度上取决于产品的性质,根据实际情况进行调整。)
    在这里插入图片描述
  • 确认和验证:确认是保证软件符合产品说明书的过程; 验证是保证软件满足用户要求的过程。
  • 质量和可靠性:可靠性是质量的一方面。
  • 测试和质量保证(QA):软件测试员的目标是尽可能早地找出软件缺陷,并确保缺陷得以修复。软件质量保证人员的主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法。

(3)黑盒测试和白盒测试

  • 黑盒测试有时又称功能性测试 (functionaltesting)或行为测试(behaviorn testing)。在黑盒测试中,软件测试员只知道要做什么,而无法看到软件内是如何运行的。
  • 白盒测试中,软件测试员可以访问程序的代码,并通过检查代码的线索来协助测试。进行白盒测试也要冒一些风险。因为要以造应代码操作来定制测试,所以很容易造成固定思维无法进行客观测试。

(4)静态测试和动态测试

  • 静态测试是指测试不运行的部分一只是检查和审核;
  • 动态测试是指通常意义上的测试一一使用和运行软件。

—————————————————————————————————
这篇文章对应的原书部分已上传到了本人运营公众号【软件测试必备技能】
是通过手机扫描的,可能会有些许模糊,我看看以后能不能扫描的更清晰一些~[抱拳]
(资源仅供学习和分享,莫要用于商用)
有需要可点击文章下发二维码,前往公众号领取~
在这里插入图片描述

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

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

相关文章

【视频教程解读】Window上安装和使用autogluon V0.4

1.使用conda安装的python环境 教程使用的是极简版miniconda,由于我们的电脑中安装了anaconda,所以不需要进行进一步安装。python版本为3.9,博客里面有anaconda和python版本的对应关系。注意查看版本autogluon V0.4需要3.8或者3.9和3.10,pip版…

Linux:网络基础1

网络协议分层 所有网络问题,本质都是通信距离变长了,为了尽可能减少通信成本,定制了协议。 协议分层的优势: 软件设计方面的优势 - 低耦合 一般我们的分层依据: 功能比较集中,耦合度比较高的模块-- 一层 &#xff0c…

【Vue 基础】尚品汇项目-03-home首页搭建(全局组件与局部组件)

1. 完成三级联动组件(全局组件) 由于三级联动组件在Home、Search、Detail中都需使用,因此将三级联动组件作为全局组件,这样只需要注册一次,就可以在项目任意地方使用。 新建“home/TypeNav/index.vue”,写…

深度学习技巧应用10-PyTorch框架中早停法类的构建与运用

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用10-PyTorch框架中早停法类的构建与运用,文章将介绍深度学习训练过程中的一个重要技巧—早停法,以及如何在PyTorch框架中实现早停法。文章将从早停法原理和实践出发,结合实际案例剖析早停法的优缺点及在PyTorch中的应…

[创新工具和方法论]-02- DOE实验设计步骤

文章目录 1.DOE设计1.1 基于OFAT的传统实验设计:1.2 基于DoE的现代实验设计:1.3 DOE和OFAT的比较1.4 如何利用好DOE1.4.1 规划1.4.2 筛选1.4.3 表征1.4.4 优化1.4.5 确认 2. 步骤2.1陈述实际的问题和实验的目的2.2因果链分析,提取重要的因子2.3选择Y的响…

永磁同步电机(PMSM)无传感器控制基于滑膜观测器Matlab/Simulink仿真分析

文章目录 前言一、状态观测器二、滑膜状态观测器2.1.滑膜观测器的原理2.2.传统的滑膜观测器2.3.改进的滑膜观测器 三、Matlab/Simulink仿真分析3.1.仿真电路分析3.1.1 电机控制模式切换3.1.2 速度环控制3.1.3 电流环控制3.1.4 电机主电路 3.2.仿真结果分析 总结 前言 本章节采…

跳跃游戏 (DFS->记忆化搜索->动态规划/贪心证明)

一.跳跃游戏简单介绍 1. 跳跃游戏简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr,从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步,或者固定步数&#…

【HQL - 查询用户的累计消费金额及VIP等级】

水善利万物而不争,处众人之所恶,故几于道💦 题目: 从订单信息表(order_info)中统计每个用户截止其每个下单日期的累积消费金额,以及每个用户在其每个下单日期的VIP等级。 用户vip等级根据累积消费金额计算&#xff0…

Unity之OpenXR+XR Interaction Toolkit基本配置

前言 XR Interaction Toolkit 是Unity基于OpenXR标准,发布的一套XR工具,目的是方便我们快速接入XR相关的SDK,并且做到兼容不同VR设备的目的,目前流行的VR设备如Oculus,Metal,HTC Vive,Pico等统…

JavaSE第三章 访问修饰符,Collection,List

这里写目录标题 一 访问修饰符二 集合1.1 数组1.2 集合1.3 读Collection的源码1.3.1 add添加方法1.3.2 clear,size,isEmpty方法1.3.3 remove 方法1.3.4 equals方法与contain方法1.3.5 遍历,迭代器或者增强for循环1.3.6 迭代器重点 1.4 List1.…

numpy的下载、数据类型、属性、数组创建

下载numpy 因为numpy不依赖于任何一个包所以numpy可以直接使用pip命令直接下载 下载命令: pip install numpy # 默认从https://pypi.org/simple 下载 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 从清华大学资源站点下载 pip install nump…

一步步解密微商城系统开发流程

作为现代商业的重要组成部分,电子商务系统的建设对于企业的发展至关重要。然而,对于一些小型企业来说,建设一个完整的电子商务系统可能会耗费大量的时间和金钱。微商城系统的出现有效地解决了这个问题,因为它可以在不需要太多资金…

趣说数据结构(练习1) —— 顺序表/链表力扣刷题

练习 1 —— 顺序表/链表力扣刷题 1. 合并两个有序链表 力扣题目地址:https://leetcode.cn/problems/merge-two-sorted-lists/ 问题描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#x…

【云计算•云原生】4.云原生之什么是Kubernetes

文章目录 Kubernetes概念Kubernetes核心概念集群podConfigMap Kubernetes架构master节点的组件worker节点组件 Kubernetes网络架构内部网络外部网络 k8s各端口含义 Kubernetes概念 K8S就是Kubernetes,Kubernetes首字母为K,末尾为s,中间一共有…

全球5G市场最新进展及未来展望

从智慧医疗到万物互联,从无人驾驶到关乎我国未来发展的“新基建”,自2019年全球5G商用启动后,5G就步入了发展“快车道”;2022年继续保持快速稳定的增长态势,在网络建设、人口覆盖、终端形态等方面发展势头强劲,在技术标…

1695_week2_算法与函数(MIT使用Python编程学习手记)

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 首先说明一下,这部分信息的整理只是我个人的理解。由于自己的知识功底以及英语水准,很可能会有大量的疏漏。再此,我只想把自己学习时候的一…

C++(类和对象上篇)

本节目标: 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 目录 1、面向过程和面向对象初步认识 2、类的引入 4.类的访问限定符及封装 4.1访问限定…

为了做低代码平台,这些年我们对.NET的DataGridView做的那些扩展

我们的低代码开发平台从一开始决定做的时候,就追求未来能够支持多种类型的客户端,目前支持Winform,Web,H5,FlutterAPP,当然了,未来也有可能会随着实际的需要淘汰掉一些客户端的。 为了系统更易…

springboot - 实现动态刷新配置

自定义的配置数据源,继承自Spring框架的 MapPropertySource 类,从一个名为 my.properties 的文件中读取配置信息,并在每10秒钟刷新一次。 这里不加Component,是因为: FilePropertiesSource filePropertiesSource new…

辨析 总结PMP各种BS结构

OBS 组织分解结构、BOM 物料清单、WBS工作分解结构、RBS 资源分解结构、RBS 风险分解结构、RAM 责任分匹配矩阵辨析 组织分解结构 OBS(Organizational Breakdown Structure) 描述了执行组织的层次结构,以便把工作包同执行组织单元相关联 物料…