『软件测试1』你需要了解的软件测试基础知识(一)

简介: 笔记

对于一个软件来说,总会存在各种各样的软件缺陷。因此我们需要通过软件测试来检查软件中存在的各种问题。

在下面的这篇文章中,将讲解软件测试的基础知识,让我们一起来了解一下吧🙋


一、 软件缺陷的概述



1、什么是软件缺陷


   软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,不能满足或不能全部满足用户的需求。

   IEEE(电气电子工程师协会)对软件缺陷有一个标准的定义

   从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、误差等各种问题。

   从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。


2、软件缺陷的类型


1)软件未实现产品说明书要求的功能。

2)软件出现了产品说明书不应该出现的错误。

3)软件实现了产品说明书未提到的功能。

4)软件未实现产品说明书虽未明确提及但应该实现的功能。

5)软件难以理解、不易使用、运行缓慢——从测试员的角度看——最终用户会认为不好。


3、软件缺陷的案例


1)千年虫问题(产生约1974年)

2)爱国者导弹防御系统(1991年)

3)英特尔奔腾浮点除法缺陷(1994年)

4)“冲击波”病毒(2003年)

5)诺基亚手机平台缺陷(2008年)


4、软件缺陷的产生原因


  • 需求不明确
  • 软件结构复杂
  • 开发人员水平有限
  • 项目期限短
  • 使用新技术
  • 其他原因


5、软件缺陷的分类


21.png


6、软件缺陷的处理流程


每个公司的软件缺陷处理流程不尽相同,但是它们遵循的最基本流程是一样的,都要经过提交分配确认处理复测关闭等环节。

22.png

  • 提交:测试人员发现缺陷之后,将缺陷提交给测试组长。
  • 分配:测试组长接收到测试组员提交的缺陷之后,将其移交给开发人员。
  • 确认:开发人员接收到移交的缺陷之后,会与团队甚至测试人员一起商议,确定该缺陷是否是一个缺陷。
  • 拒绝:如果经过商议之后,缺陷不是一个真正的缺陷则拒绝处理,关闭缺陷。如果经过商议之后,确定其是一个真正的缺陷,则可以根据缺陷的严重程度或优先级等立即处理或延期处理。
  • 复测:开发人员修改好缺陷之后,测试人员重新进行测试(复测),检测缺陷是否确实已经修改。如果未被正确修改,则重新提交缺陷。
  • 关闭:测试人员重新测试之后,如果缺陷已经被正确修改,则将缺陷关闭,整个缺陷处理完成。


7、多学一招:缺陷报告(由测试人员完成)


测试人员在提交软件测试时都会按照公司规定的模板(Word、Excel、缺陷管理软件等)将缺陷的详细情况记录下来生成缺陷报告,每个公司的缺陷报告模板并不相同,但一般都会包括缺陷的编号类型严重程度优先级测试环境等,有时还会有测试人员的建议


8、常见软件缺陷管理工具


(1)Bugzilla

  • Bugzilla是Mozilla公司提供的一款免费的软件缺陷管理工具
  • Bugzilla能够建立一个完整的缺陷跟踪体系,包括缺陷跟踪记录缺陷报告处理解决情况等。
  • 使用Bugzilla管理软件缺陷时,测试人员可以在Bugzilla上提交缺陷报告,Bugzilla会将缺陷转给相应的开发者,开发者可以使用Bugzilla做一个工作表,标明要做的事情的优先级时间安排跟踪记录

(2)禅道

  • 禅道是一款优秀的国产项目管理软件,它集产品管理项目管理质量管理缺陷管理文档管理组织管理事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程
  • 禅道分为专业开源两个版本,专业版是收费软件,开源版是免费软件,对于日常的项目管理,开源版本已经足够使用。

(3)JIRA

  • JIRA是Atlassian公司开发的项目与实务跟踪工具,被广泛用于缺陷跟踪客户实务需求收集流程审批任务跟踪项目跟踪敏捷管理等工作领域。JIRA配置灵活、功能全面、部署简单、扩展丰富、易用性好,是目前比较流行的基于Java架构的管理工具。
  • JIRA软件有两个认可度很高的特色:第一个是Atlassian公司对该开源项目实行免费提供缺陷跟踪服务;第二个是用户在购买JIRA软件同时将源代码也购置进来,方便做二次开发


9、修复软件缺陷的成本


软件开发过程是使用软件工程的方法,在整个过程中,都有可能出现各种各样的软件缺陷。**随着开发时间的推移,软件缺陷修复成本呈倍数的增长。**假如早在进行分析时发现相关功能缺失,立即补上就可以了,可以说付出的代价小得几乎忽略不计。如果在发布时发现缺失某个功能,那么此时加上一个功能,相当于重新开发一样,这时的修补费用可以说高了许多。因此要尽早进行测试


二、 软件的概述



1、软件生命周期


先来了解软件生命周期的全过程

23.png

下面对软件生命周期各个过程进行逐一解析

(1)问题定义:由软件开发方需求方共同讨论,主要确定软件的开发目标及其可行性

(2)需求分析:对软件需求进行更深入的分析,划分出软件需要实现的功能模块,并制作成文档(需求分析说明书)

(3)软件设计:在需求分析结果的基础上,对整个软件系统进行设计,包括系统框架设计数据库设计等。(概要设计、详细设计)

(4)软件开发:在软件设计的基础上,选择一种编程语言进行开发。

(5)软件测试:软件开发完成后对软件进行测试,以查找软件设计与软件开发过程中存在的问题并加以修正。

(6)软件维护:软件投入使用之后,可能无法满足用户的使用需求,此时就需要对软件进行维护升级以延续软件的使用寿命。软件维护是软件生命周期中持续时间最长的阶段。


2、开发过程中的角色


(1)高级经理:参与项目过程中各个关键环节的活动,关注产品开发的进度,对风险控制、资源提供做出决策。

(2)产品经理(项目经理):作为客户方公司内部交流的纽带,对项目过程进行监控,对项目的进度、质量负责。

(3)开发经理:是具体开发过程的领导者,必需由熟悉业务和开发技术的专家担任;职责是界定需求,确定适当的技术架构和体系,保证软件产品按照设计的标准开发。

(4)设计师软件蓝图设计者,可以分需求分析师、架构设计师、业务设计师三种。基本活动包括:需求分析、架构设计和功能设计,按照规范编写相应的文档。

(5)测试经理测试活动的领导者,是公司内部认定的产品质量责任人。责任是计划和组织测试人员对目标产品进行测试,发现bug、跟踪bug直到解决bug;计划和组织用户培训工作。

(6)开发人员:根据设计师的设计成果进行具体编码工作,对自己的代码进行基本的单元测试

(7)测试人员:根据测试经理的计划和测试总体方案对目标产品进行测试,编写测试用例测试代码,发现和跟踪bug;编写用户手册;进行用户培训和教育。

(8)项目实施人员:针对工程性质的项目必需的人员配置,负责软件系统安装配置系统割接运行期间的维护工作


3、软件开发模型


(1)瀑布模型

  • 优点:检查点清晰,分工明确,有利于大型软件软件开发人员的组织管理及工具的使用与研究,可以提高开发的效率。
  • 缺点:严格按照线性执行,增加了开发风险;要求必须有产出结果,增加了开发工作量。那么,对于现代软件,各阶段之间的关系很少是线性,瀑布模型已经不适合现代软件开发。

24.png

(2)快速原型模型

  • 优点:克服了需求不明确带来的风险,适用于不能预先确定需求的软件项目。
  • 缺点:原型设计较难;不利于开发人员对产品的扩展。

25.png

(3)迭代模型

  • 优点:适应客户需求变更;降低了开发成本和风险。
  • 缺点:增加了集成失败风险;容易退化为“边做边改”模式,失去对整个项目的控制。

26.png

(4)螺旋模型

  • 优点:强调了风险分析,有助于将软件质量融入开发中;小分段构建大型软件,易于计算成本;客户参与,保证项目可控性。
  • 缺点:构建过程太过繁琐,不适合小型项目。

27.png

(5)敏捷模型

  • 定义:敏捷模型以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
  • 特点
  • 项目被拆分成多个子项目,迭代完成,每个迭代都要经过测试。
  • 快速响应需求变更,在修改过程中,软件一直处于可用状态。
  • 不断对产品进行细微、渐进式地改进,每次改进一小部分,如果可行再逐步扩大改进范围。
  • 开发未动,测试先行。
  • 注重“人”的作用。
  • 优点:及时响应客户需求变更,不断适应新的趋势。
  • 缺点:管理相对混乱,不适合大型项目。

PS 以上内容是对软件开发模型的简要概括,如需了解软件开发模型的详细内容,请前往软件工程和过程模型


4、软件质量概述


(1)定义:软件质量是指软件产品满足基本需求及隐式需求的程度。软件产品满足基本需求是指其能满足软件开发时所规定需求的特性;其次是软件产品满足隐式需求的程度。

(2)软件质量模型:ISO/IEC 9126:1991质量模型是最通用的一个评价软件质量的国际标准,建立在MCCall和Boehm模型基础之上,主要描述了内部质量外部质量使用质量。由6个特性和27个子特性组成。

软件质量模型图如下

28.png

对内部质量、外部质量和使用质量进行逐一解析

①内部质量:针对内部质量需求被测量和评价的质量,可维护性、灵活性、可移植性、可重用性、可读性、可测试性、可理解性。

②外部质量:使用外部度量在模拟环境中,用模拟数据测试时,所被测量和评价的质量,即在预定的系统环境中运行时可能达到的质量水平。正确性、可用性、效率、可靠性、完整性、适应性、精确性、坚固性。

③使用质量:在规定的使用环境下,软件产品使特定用户在达到规定目标方面的能力。有效性、生产率、安全性、满意程度等。


相关文章
|
15天前
|
运维 Ubuntu 测试技术
自动化运维的利剑:Ansible在配置管理中的应用软件测试的艺术:探索性测试的深度与广度
【8月更文挑战第27天】 在数字化浪潮中,高效的运维工作是支撑企业IT系统稳定运行的关键。Ansible,作为一款简易而强大的自动化运维工具,正逐渐成为IT专业人士的新宠。本文将通过浅显易懂的语言和生动的案例,带你了解Ansible的核心概念、安装步骤、基础命令以及它在配置管理中的实际应用。我们的目标是让初学者能够轻松上手Ansible,同时为有经验的运维工程师提供一些实用的技巧和思路。
|
15天前
|
安全 测试技术
软件测试的艺术:探索性测试的奥秘
【8月更文挑战第28天】在软件开发的宇宙中,测试是那颗指引航船安全抵达目的地的北极星。探索性测试(Exploratory Testing, ET)作为一种灵活而富有创造性的测试实践,它如同艺术家的画笔,描绘出软件质量的全貌。本文将带你领略探索性测试的魅力,从其哲学到实操技巧,再到如何与自动化测试和谐共存,我们将一同走进这个充满未知与惊喜的软件测试领域。
|
12天前
|
监控 测试技术 Python
软件测试的艺术与科学:探索测试自动化的奥秘
【8月更文挑战第30天】在软件开发的海洋中,测试是那把确保航船不偏离航线的罗盘。本文将带您一探究竟,从测试的基础到高级自动化策略,揭示如何通过代码和工具提升测试效率。准备好启航,因为我们将深入探讨软件测试的核心,以及如何利用自动化技术来优化您的测试流程。
13 4
|
12天前
|
物联网 测试技术 持续交付
软件测试的艺术与科学:探索自动化测试框架未来技术的融合与创新:探索区块链、物联网和虚拟现实的交汇点
【8月更文挑战第30天】在软件开发的海洋中,测试是确保航行安全不可或缺的灯塔。本文将带领读者揭开软件测试神秘的面纱,深入理解自动化测试框架的重要性和实现方法。通过实际案例,我们将一起探索如何构建高效、可靠的自动化测试系统,从而保障软件质量,提升开发效率。
|
15天前
|
测试技术
软件测试的艺术:探索性测试的力量
【8月更文挑战第27天】在软件测试领域,探索性测试(Exploratory Testing)是一种既自由又创造性的测试实践。它不依赖于事先编写的测试用例,而是鼓励测试人员发挥他们的直觉、经验和逻辑推理能力,去发现软件中可能隐藏的缺陷和问题。这种方法强调的是测试过程的灵活性和适应性,让测试更加贴近实际的用户场景和需求。探索性测试不仅能够提高测试效率,还能够促进测试人员之间的知识共享和协作。
|
9天前
|
测试技术 数据安全/隐私保护
软件测试的艺术:如何高效地编写测试用例
【9月更文挑战第2天】在软件开发的海洋中,测试用例是导航灯塔,指引着质量保障的航向。本文将带你航行于测试用例编写的技巧之海,从理解需求到设计思路,再到实际执行,我们将一起探索如何高效而精准地构建测试用例,确保软件的稳健与可靠。
20 0
|
11天前
|
测试技术 UED Python
探索软件测试的边界:自动化与手动测试的协同
【8月更文挑战第31天】 在追求效率和质量的软件生产中,自动化测试与手动测试的辩论从未停止。本文将通过实际案例,揭示二者如何相辅相成,共同构建更健壮的软件测试体系。我们将深入探讨自动化测试的优势、手动测试不可替代的角色以及它们如何在实际项目中协同工作,旨在为读者提供一种平衡的视角来看待软件测试的实践。
|
11天前
|
测试技术
软件测试的艺术与科学:探索自动化测试的最佳实践
【8月更文挑战第31天】在软件开发的海洋中,测试是确保航船稳健前行的罗盘。本文将带你揭开软件测试的神秘面纱,深入探讨自动化测试的魅力和挑战。我们将一起航行于代码的波浪之中,学习如何构建稳固的测试框架,以及如何利用这些框架来捕捉那些潜藏在深处的缺陷。加入我们,让我们一起提升软件质量,确保每一次航行都能抵达成功的彼岸。
|
12天前
|
Web App开发 安全 测试技术
软件测试的艺术:探索自动化测试框架
【8月更文挑战第31天】在软件开发的海洋中,测试是确保船只安全航行的灯塔。本文将带你领略自动化测试框架的魅力,通过深入浅出的方式,让你快速掌握如何搭建和运用这一工具来提升软件质量。我们将从基础概念讲起,逐步深入到实战应用,最终实现代码与理论的完美结合。让我们启航,共同探索自动化测试的世界!
|
12天前
|
敏捷开发 测试技术
软件测试的艺术:探索性测试的力量与实践
【8月更文挑战第30天】在软件开发的海洋中,测试是确保航船不偏离航线的关键。本文将带你深入探索性测试(Exploratory Testing)的世界,一种强调测试人员创造性和直觉的测试方法。我们将一起了解它如何增强传统测试方法,提高软件质量,并探讨实施探索性测试的最佳实践。准备好启航,因为我们将开启一场关于软件质量保证的全新冒险。