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

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

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

一、软件测试背景

(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)静态测试和动态测试

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

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

猜你喜欢

转载自blog.csdn.net/weixin_40883833/article/details/130396282
今日推荐