《软件测试的艺术》第九章 敏捷开发模式下的测试

2023-10-27

9.0 前言

个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
相应变化 高于 遵循计划

9.1 敏捷开发的特征

敏捷开发提倡迭代式和增量式的开发模式,并强调测试在其中的重要作用。这是一个围绕以用户为中心,以客户需求为导向的开发过程,在此过程中随时做好“迎接变化”的准备。尽管敏捷方法引入了灵活性,但其重点仍在于客户满意度。客户是敏捷开发的关键环节,也就是说,如果没有客户的参与,敏捷方法等同失败。

敏捷开发没有单一固定的开发方法或过程,很多快速的开发模式都可以看做是敏捷。然而这些模式的确有三个共同点:依赖客户的参与、测试驱动以及紧凑的迭代开发周期。
在这里插入图片描述
现在我们面临的挑战是正确选择敏捷方法,这通常需要开发人员、管理人员以及客户的通力合作。而不断的测试以及充分地与客户互动将使产品最终获益并顺利发布。

9.2 敏捷测试

本质上,敏捷测试是协同测试的一种形式,它要求每一个人都参与到测试计划的设计、实现以及执行中去。客户通过定义用例以及程序属性参与到定义验收测试的设计中来。开发者和测试者共同打造可以进行功能自动化的测试配件。敏捷测试需要每个人都参与到测试过程中,这往往伴随着大量的沟通与协作工作。

和敏捷开发的大多数特征无异,敏捷测试需要客户尽早参与到开发周期中来并一直到其结束。举个例子,一旦开发者的代码库稳定之后,客户需要开始验收测试并向开发团队提供反馈。这同时也意味着测试并不是独立的一个阶段,而是和开发过程紧密联系并驱动开发。

为了保证交付验收测试的产品是稳定的版本,开发者通常从创建单元测试开始,然后实现软件单元代码。单元测试是失败验证测试,开发者从破坏的角度设计这些用例。这意味着在实现软件功能的时候一定要有错误处理代码来“测试”自己的测试用例。而一旦测试配件准备就位,开发者就开始编写可以通过单元测试验证的代码。

快速软件开发需要更及时的反馈,敏捷测试依赖于自动化测试。 现在已经有大量的开源和商业测试套件可用,使用什么样的工具并不重要,只要保证测试和开发工作在相同的环境和工具下就没问题。

敏捷开发环境常常由小型作战团队构成,这里开发人员也要分饰测试角色。拥有较多资源的大一点的项目会配备一个独立的测试工程师或一个测试小组。不管是测试工程师还是测试小组,测试者都不能仅仅是把问题找出来并交给开发人员修复,他们的任务是通过持续的测试反馈推动项目前行,帮助开发者修复bug、改变需求设计以及其他的一般性质量提升。

9.3 极限编程(XP)与测试

XP模型除了需要客户参与之外,还高度依赖模块的单元和验收测试。总体来说,对任何一个递增的代码变更,开发人员都必须进行单元测试,以确保代码库满足其规格说明的要求。事实上,测试在XP中的地位非常重要,所以需要首先创建单元(模块)测试和验收测试,然后才能创建代码库。这种形式的测试称为极限测试(XT)。

9.3.1 极限编程基础

XP是一种可以使开发人员快速生产高质量代码的软件开发过程。在这种情况下,我们可以将“质量”定义为代码库对其设计的规格以及客户的满意程度。

XP的关注点是:

  • 实现简单的设计。
  • 开发人员与客户的沟通协作。
  • 不断地测试代码库。
  • 重构以适应规格说明的变更。
  • 寻求用户的反馈。

XP更倾向于适合中小规模的软件开发,这些软件的规格说明变更非常频繁,而且它们还可以进行接近实时的沟通。

XP与传统的开发过程相比有以下几处不同:

  1. 首先,它避免了大规模项目的综合症——在开始编码之前客户与编程小组碰头,设计软件的每一个细节。(为了反映新的业务准则或市场情况,客户的规格说明和需求必须不停地变更。)XP的策划阶段的重点将集中于收集应用程序的一般性需求,而非在所有的小细节上。
  2. XP避免了编写不需要的功能。如果客户认为某个功能虽然需要,但并不要求实现它,那么在软件开发时通常不包含此项功能。因此我们可以把中心集中在正在开发的任务上,为软件产品增加价值。
  3. XP方法的主要不同之处是将精力集中在测试上。在经历了一个非常全面的设计阶段之后,传统的软件开发模型会建议首先编码,然后才生成测试接口。但在XP方法中,我们必须首先生成单元测试用例,然后才编写代码通过测试

XP开发模型用12个核心实践来驱动该过程。
在这里插入图片描述

在这里插入图片描述
简单来说,这12个核心的XP实践可以归纳为4个概念:

  1. 聆听客户和其他程序员的谈话。
  2. 与客户合作,开发应用程序的规格说明和测试用例。
  3. 结对编程。
  4. 反复测试代码库。

9.3.1.1 XP计划

一个成功的计划阶段将为整个XP过程奠定了基础。XP的计划阶段和传统开发模型不同,通常需求收集与应用设计结合起来。XP中的计划重点是确定客户的应用需求,然后设计使用场景来满足客户的应用需求。

9.3.1.2 XP测试

基于XP的方法取得成功的关键是进行连续的测试。虽然连续测试的原则包含了验收测试,但单元测试占了主要的部分。设计单元测试是用来导致程序失败。只有确保你的测试能够探测到错误,你才能开始修改你的代码以期它能通过测试。确保单元测试可以捕获错误,这是测试工作的关键。

连续测试的原则同样也支持为优化和调整代码库所进行的重构。

9.3.2 极限测试:概念

为了满足XP的流程和思想,开发人员使用了极限测试方法,该方法强调连续测试。极限测试主要由两种类型的测试组成:单元测试和验收测试。 设计测试用例时所采用的原理和第五章描述的原理没有明显差异,但是在开发过程的哪个阶段设计测试用例则有所不同。

9.3.2.1 极限单元测试

单元测试具备两条简单规则:

  1. 所有代码模块在编码开始之前必须设计好单元测试用例。
  2. 在产品发布之前须通过单元测试。

极限测试中的单元测试与前面描述的单元测试之间的最大差别在于,极限测试中的单元测试必须在模块编码之前就完成设计和生成。

下面列出了在开始编码之前设计单元测试所带来的一些好处:

  • 获得了代码将满足其规格说明的信心。
  • 在开始编码之前,就展现了代码的最终结果。
  • 更好地理解了应用程序的规格说明和需求。
  • 可以先实现一些简单的设计,稍后再放心地重构代码以改善程序的性能,而无需担心破坏应用程序的规格说明。

通常要采用一个自动化的软件测试套件来减轻连续执行单元测试的负担。在这些测试套件的帮助下,编写测试脚本,然后执行全部或其中的一部分。除此之外,测试套件通常可以生成报告,并对应用程序中频繁出现的缺陷进行分类。该信息可以帮助我们在将来主动清除这些缺陷。

非常有趣的是,一旦设计并验证了单元测试,这些“测试”用例代码库就与试图编写的应用软件一样有价值。因此,应当将这些测试用例保存在一个代码库中。此外,还应确保进行足够的备份,并具备所需的安全保密措施。

9.3.2.2 验收测试

验收测试的目的是判断应用程序是否满足如功能性和易用性等其他需求。在设计/计划阶段,由开发人员和客户来设计验收测试。

在这种方法中,客户对应用程序是否满足他们的要求进行客观、公正的确认。客户通过使用场景来设计验收测试。使用场景和验收测试之比通常是一对多,也就是说,每一个场景都可能需要不止一个的验收测试。如果应用程序与预期结果不一致,即被当做一个缺陷,报告给开发小组。如果客户发现了多个缺陷,那么在将列表传递给开发小组之前,得对缺陷进行优先级别排序。当缺陷被修正,或程序中发生任何变更时,客户都需要重新执行验收测试。从这点来看,验收测试也是回归测试的一种。

极限测试中的验收测试可以是自动化的和非自动化的。

需要特别提醒的是,程序有可能通过所有的单元测试,却不能通过验收测试。因为单元测试是确认程序单元是否满足特定的规格说明,而并非具体的可操作性或审美特性。

9.4 小结

今天日益白热化的软件市场竞争对产品的发布速度提出了越来越苛刻的要求,严格遵循敏捷开发过程,为我们提供了一条通往更快速、更高品质软件的康庄大道,而这显然要比传统软件开发方法要更有效率。

极限编程模型是主流敏捷开发方法之一,这种轻量级的开发过程主要把目光集中于沟通、计划以及测试。极限编程中的测试称为“极限测试”。极限测试的重点在于单元测试和验收测试。一旦代码库发生变更,就需要进行单元测试。在重要的发布结点,由客户来执行验收测试。

极限测试还要求程序员在开始程序编码之前,要根据程序的规格说明设计测试配件。在这种方式中,开发的程序要通过单元测试,从而提高该程序满足其规格说明的概率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《软件测试的艺术》第九章 敏捷开发模式下的测试 的相关文章

  • Python 如何安装Selenium(推荐)

    一 Selenium的定义 Selenium 是一个 Web的自动化测试工具 最初是为网站 自动化测试而开发的 Selenium 可以直接调用浏览器 它支持所有主流的浏览器 包括PhantomJS 这些无界面的浏览器 可以接收指令 让浏览器
  • 软件测试开发/全日制/测试管理丨用户端 Web 自动化测试

    随着Web应用的普及和不断发展 用户端Web自动化测试成为确保Web应用质量的重要手段 这种测试方法不仅提高了测试效率 也帮助团队及时发现和解决潜在问题 确保用户体验的连贯性和稳定性 工具选择 用户端Web自动化测试的第一步是选择适当的工具
  • Python接口自动化测试处理不同接口间参数依赖

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 19年通过校招进入广州某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 测试工程师能否作为一份「终身职业」?30岁+怎么办?

    讨论 测试工程师可否作为一份终生的职业 这是我在论坛看到的一个讨论 你的答案是什么呢 我希望大家能认真思考后给出一个属于自己的答案 无论你是新手入门 还是资深专家 回答这个问题请不要凭一腔热血 也不用过分消极 别总和钱挂钩 平心而论即可 就
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium 提供了多种运行验证方式 其特点 支持一套脚本 iOS Android 模拟器 三端运行 提供丰富的页面跳转方式 看不到也能去得到 可以获取和设置小程序页面数据 让测试不止点点点 可以直接触发小程
  • 基于Loadrunner的性能分析及调优经验分享

    公司某个系统的微信端计划将开放给几百上千的人员登录查询 并且登录账号为同一账号多人使用 后台服务能够支撑起多用户的并发操作以及成百上千人登录微信端对生产数据库或者登录查询的性能效率高成为交付可靠生产环境的必要条件 因此 项目组决定提交测试
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|如何使用selenium处理iframe富文本输入框

    简介 在网页开发中 富文本框是常见的元素 用于输入富文本内容 如富文本编辑器或邮件编辑器 如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框 可能会遇到一些挑战 本文将详细介绍如何使用Python和Selenium
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯式性能指标监听

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它

随机推荐

  • KEIL3新建TA89C51工程

    1 新建一个文件夹命名为TEST 如图所示 2 在TEST文件夹里面新建一个LED的空文件夹 如图所示 3 打开keil3依次点击Project New uVision Project 如图所示 4 找到最开始新建的文件夹TEST 并打开里
  • 学计算机编程配置需求,编程对电脑配置要求高吗?

    算法是编程的灵魂 是程序的核心组成 系统对程序算法的编译就是程序生成的过程 大型的应用程序如我们日常用的OFFICE办公工具 大家爱玩的吃鸡游戏等 其算法复杂 没有几年的苦心研发 编写代码 优化算法结构是看不出来了 由于这类程序的复杂性与庞
  • 二叉树知识点概

    树 一 树读常考性质 节点数 总度数 1 即除了根节点 每个节点都有一个入度 前驱 度为m的树和m叉树 度为m的树第i层至多有 m i 1
  • vscode中嵌入cppcheck进行静态检查,包含插件使用方法

    1 vscode下载插件cpp check lint 如图 下载好之后按ctrl shift p打开用户设置 user setting 在设置中追加加入以下代码 cppcheck配置 cpp check lint enable true 启
  • 贵州酒店集团过405拦截

    文章目录 一 为什么返回405 二 开发者怎么解除限制 一 为什么返回405 云盾是阿里巴巴集团多年来安全技术研究积累的成果 结合阿里云云计算平台强大的数据分析能力 为中小网站提供如安全漏洞检测 网页木马检测以及面向云服务器用户提供的主机入
  • QT多平台移植经验分享及问题解析

    Qt5与Qt4对比 没有Qt4用到的qws Qt5新增了QPA系统 基于QPA使得Qt5移植到一个新平台非常简单而又具有极强的底层扩展能力 同时 C 11 也获得全面支持 使用 C 11 新特性更为方便 下面讲述将Qt5 4 1移植到目标板
  • QQ红包金额分配算法

    最近对红包金额分配感兴趣 便整理了一个较简单的分配算法 思路 主要是通过随机函数对金额随机分配 由于金额与份数不断变化 如何保证分配前等概率呢 本例是将金额等分 取得均值 但第一份取左和取右等概率 故其最大值为右份边界 代码 include
  • linux copy_from_user 头文件,宋宝华: Linux为什么一定要copy_from_user ?

    网上很多人提问为什么一定要copy from user 也有人解答 比如百度一下 但是这里面很多的解答没有回答到点子上 不能真正回答这个问题 我决定写篇文章正式回答一下这个问题 消除读者的各种疑虑 这个问题 我认为需要从2个层面回答 第一个
  • MySQL5.7忘记root密码-最简单的修改密码方法

    我的上一篇博客 MySQL5 7忘记root密码 手动修改密码教程 讲的还算详细 对于Windows10 DOS命令下的修改MySQL数据库密码可能出现的一些问题都做了讲解 相比上一篇 这一片会简单化描述 1 停止MySQL服务 去任务管理
  • 性能测试LoadRunner深入浅出

    Da01 一 初步概念 1 功能测试 测试软件产品的功能是否达到要求 如 ATM取款 在线取款 是否成功 转账成功 表示功能实现了 一个人 2 性能测试 测试软件产品的性能是否达到要求 包括 时间性能 多用户共同使用时的性能 如 ATM取款
  • 作业:递归实现插入排序和在o(nlgn)时间复杂度内寻找和为定值的两个元素

    1 递归实现插入排序 基本思想 可以把插入排序看作递归 地排序A 1 n 1 然后插入a n 到已经排好序的序列a 1 n 1 中 一下是实现算法 C 描述 VS205中调试通过 class InsertSort static void M
  • 智能合约编写之Solidity的高级特性

    前言 FISCO BCOS使用了Solidity语言进行智能合约开发 Solidity是一门面向区块链平台设计 图灵完备的编程语言 支持函数调用 修饰器 重载 事件 继承和库等多种高级语言的特性 在本系列前两篇文章中 介绍了智能合约的概念与
  • console.log机制

    介绍 前端在调试的时候很多都使用了console log 但大家都知道他的机制吗 遇到问题 在想要获取一个对象的某一个属性的属性值的时候 因为发送了ajax请求 然后在mounted阶段打印对象的属性时为空 而打印对象显示要获取的属性有值
  • Tomcat优化(一)-线程池优化

    tomcat处理请求的过程 在accept队列中接收连接 当客户端向服务器发送请求时 如果客户端与OS完成三次握手建立了连接 则OS将该连接放入accept队列 在连接中获取请求的数据 生成request 调用servlet容器处理请求 返
  • 能详细介绍审核任务分配有那些算法

    审核任务分配是一个有关人工智能和机器学习的研究领域 它的目的是分配审核任务 例如审核文本内容 给合适的审核员 以保证审核任务的高效性和准确性 下面是一些常见的审核任务分配算法 贪心算法 这是一种简单的分配算法 它按照审核员的审核能力和审核任
  • 记一次Gitlab升级, 14.6.0-ee到14.10.0-ee

    升级原因 Gitlab无法删除项目 点删除按钮后项目依然存在 打开后提示 No repository 不确定是否这个版本问题 想通过版本升级重装一遍看能否解决问题 升级过程 时间 2022 04 27 当前最新版本GitLab Enterp
  • 那些你可能不知道的浏览器奇技淫巧

    平常工作少不了用浏览器 以下分享一些浏览器的使用技巧 更好的有助于你的工作 ps 以下技巧均在 Chrome 浏览器下测试的 网页长截图 按 F12 弹出控制台 按 ctrl shift p 弹出输入框 输入full 选择 capture
  • 二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放 一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。 对于两个格子坐标(x1,y1),(x2,y2)

    题目 二货小易有一个W H的网格盒子 网格的行编号为0 H 1 网格的列编号为0 W 1 每个格子至多可以放一块蛋糕 任意两块蛋糕的欧几里得距离不能等于2 对于两个格子坐标 x1 y1 x2 y2 的欧几里得距离为 x1 x2 x1 x2
  • JS-Array

    JS Array 数组的基本使用
  • 《软件测试的艺术》第九章 敏捷开发模式下的测试

    软件测试的艺术 第九章 敏捷开发模式下的测试 9 0 前言 9 1 敏捷开发的特征 9 2 敏捷测试 9 3 极限编程 XP 与测试 9 3 1 极限编程基础 9 3 1 1 XP计划 9 3 1 2 XP测试 9 3 2 极限测试 概念