【软件测试】 {1} 你需要了解的软件测试基础知识

2021-05-14  本文已影响0人  星期一研究室

软件测试基础

一、 软件缺陷的概述

1、什么是软件缺陷

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

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

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

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

2、软件缺陷的类型

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

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

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

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

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

3、软件缺陷的案例

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

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

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

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

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

4、软件缺陷的产生原因

5、软件缺陷的分类

软件缺陷的分类

6、软件缺陷的处理流程

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

软件缺陷的处理流程

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

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

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

(1)Bugzilla

(2)禅道

(3)JIRA

9、修复软件缺陷的成本

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

二、 软件的概述

1、软件生命周期

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

软件生命周期的全过程

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

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

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

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

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

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

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

2、开发过程中的角色

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

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

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

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

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

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

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

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

3、软件开发模型

(1)瀑布模型

瀑布模型

(2)快速原型模型

快速原型模型

(3)迭代模型

迭代模型

(4)螺旋模型

螺旋模型

(5)敏捷模型

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

4、软件质量概述

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

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

软件质量模型图如下

软件质量模型

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

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

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

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

三、 软件测试的概述

1、软件测试的发展

软件测试的发展也经历了一个漫长的过程,其发展过程可用下图表示:

软件测试的发展

2、软件测试的定义

(1)1983年,IEEE给软件测试的定义:

使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

(2)1990年,IEEE再次给出软件测试的定义:

特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价;

分析某个软件项以发现现存的和要求的条件之差别并评价此软件项的特性。

总结

  • 以上的定义都有一定的片面性。不能只对系统程序进行测试,找出系统程序中的错误,而对分析、设计等过程发生的错误视而不见。
  • 软件产品由文档、数据和程序组成,那么软件测试就是对<u>软件开发过程中形成的文档、数据以及程序进行相关的测试</u>。

3、软件测试的目的

4、软件测试的分类

(1)按照测试阶段分类

(2)按照测试技术分类

黑盒测试 白盒测试

总结:

相对于黑盒测试来说,白盒测试对测试人员的要求会更高一点,它要求测试人员具有一定的编程能力,而且要熟悉各种脚本语言。但是在软件公司里,黑盒测试与白盒测试并不是界限分明的,在测试一款软件时往往是黑盒测试与白盒测试相结合对软件进行完整全面的测试。

(3)按照软件质量特性分类

(4)按照自动化程度分类

(5)按照测试项目分类

(6)其他分类

四、 软件测试与软件开发的关系

软件测试在软件开发过程中占有重要的地位,在传统的瀑布模型中,软件测试只成为其阶段性的一段工作——进行代码的测试。而现代软件工程思想将软件测试认为是贯穿整个软件生命周期,并且是保证软件质量的重要手段之一。

有些研究数据显示,在国外软件开发的工作量中,软件测试的工作量占有总工作量的40%左右;软件开发的总费用中软件测试占有30%-50%。对于一些高科技开发系统,软件测试占有的时间和费用可能更多更高。

1、软件测试与软件开发

软件测试在项目各个阶段的作用如下

软件测试与软件开发的关系如下图所示

软件测试与软件开发的关系

2、常见软件测试模型

(1)V模型

V模型流程图如下

V模型

(2)W模型

W模型流程图如下

W模型

(3)H模型

H模型流程图如下

H模型

(4)X模型

X模型流程图如下

X模型

经验小结:

  • v模型适用于中小企业,w模型适用于中大型企业(因为人员要求高),h模型人员要求非常高,很少有公司使用;
  • 结合W模型与H模型进行工作,软件各方面的测试内容是以W模型为准,而测试周期、测试计划和进度是以H模型为指导。X模型更多是作为最终测试、熟练性测试的模板,例如,对一个业务的测试已经有2年时间,则可以使用X模型进行模块化的、探索性的方向测试。

五、 软件测试的原则

1、软件测试的原则

(1)测试应基于客户需求

所有的测试工作都应该建立在满足客户需求的基础上,从客户角度来看,最严重的错误就是软件无法满足要求。有时候,软件产品的测试结果非常完美,但却不是客户最终想要的产品,那么软件产品的开发就是失败的,而测试工作也是没有任何意义的。因此测试应依照客户的需求配置环境并且按照客户的使用习惯进行测试并评价结果。

(2)测试要尽早进行和不断进行

软件的错误存在于软件生命周期的各个阶段,因此应该尽早开展测试工作,把软件测试贯穿到软件生命周期的各个阶段中,这样测试人员能够尽早地发现和预防错误,降低错误修复的成本。尽早的开展测试工作有利于帮助测试人员了解软件产品的需求和设计,从而预测测试的难度和风险,制定出完善的计划和方案,提高测试的效率。

(3)穷举测试是不可能的

由于时间资源的限制,进行完全(各种输入和输出的全部组合)的测试是不可能的,测试人员可以根据测试的风险优先级等确定测试的关注点,从而控制测试的工作量,在测试成本、风险和收益之间求得平衡。

(4)遵循GoodEnough原则

GoodEnough原则是指测试的投入与产出要适当权衡,形成充分的质量评估过程,这个过程建立在测试花费的代价之上。测试不充分无法保证软件产品的质量,但测试投入过多会造成资源的浪费。随着测试资源投入的增加,测试的产出也是增加的,但当投入达到一定的比例后,测试的效果就不会明显增强了。因此在测试时要根据实际要求和产品质量考虑测试的投入,最好使测试投入与产出达到一个GoodEnough状态。

(5)测试缺陷要符合“二八”定理

一般情况下,软件80%的缺陷会集中在20%的模块中,缺陷并不是平均分布的。因此在测试时,要抓住主要矛盾,如果发现某些模块比其他模块具有更多的缺陷,则要投入更多的人力、精力重点测试这些模块以提高测试效率。

(6)避免缺陷免疫

测试用例被反复使用,发现缺陷的能力就会越来越差;测试人员对软件越熟悉越会忽略一些看起来比较小的问题,发现缺陷的能力也越差,这种现象被称为软件测试的“杀虫剂现象。它主要是由于测试人员没有及时更新测试用例或者是对测试用例和测试对象过于熟悉,形成了思维定势。

六、 软件测试的流程

1、软件测试的基本流程

不同类型的软件产品测试的方式和重点不一样,测试流程也会不一样。同样类型的软件产品,不同的公司所制定的测试流程也会不一样。虽然不同软件的详细测试步骤不同,但它们所遵循的最基本的测试流程是一样的。

软件测试的基本流程

(1)分析测试需求

测试人员在制定测试计划之前需要先对软件需求进行分析,以便对要开发的软件产品有一个清晰的认识,从而明确测试对象及测试工作的范围和测试重点。在分析需求时还可以获取一些测试数据,作为测试计划的基本依据,为后续的测试打好基础。

此外,分析测试需求也是对软件需求进行测试,以发现软件需求中不合理的地方。

序号 检查项 检查结果 说明
1 是否覆盖了客户提出的所有需求项 是【】否【】NA【】
2 用词是否清晰、语义是否存在歧义 是【】否【】NA【】
3 是否清楚地描述了软件需要做什么以及不做什么 是【】否【】NA【】
4 是否描述了软件的目标环境,包括软硬件环境 是【】否【】NA【】
5 是否对需求项进行了合理的编号 是【】否【】NA【】
6 需求项是否前后一致、彼此不冲突 是【】否【】NA【】
7 是否清楚地说明了软件的每个输入、输出格式,以及输入与输出之间的对应关系 是【】否【】NA【】
8 是否清晰地描述了软件系统的性能要求 是【】否【】NA【】
9 需求的优先级是否合理分配 是【】否【】NA【】
10 是否描述了各种约束条件 是【】否【】NA【】

被确定的测试需求必须是可核实的,测试需求必须有一个可观察可评测的结果。无法核实的需求就不是测试需求。测试需求分析还要与客户进行交流,以澄清某些混淆,确保测试人员与客户尽早地对项目达成共识。

(2)制定测试计划

测试计划一般要做好以下工作安排。

(3)设计测试用例

(4)执行测试

(5)编写测试报告

一份完整的测试报告必须要包含以下几个要点。

总结:测试报告的数据是真实的,每一条结论的得出都要有评价依据,不能是主观臆断的

下一篇文章讲解黑盒测试和测试用例的基础知识

七、结束语

关于软件测试的基础知识就讲到这里啦!如有不明白或有误的地方欢迎私聊或加我微信指正~

  • 公众号:星期一研究室
  • 微信:MondayLaboratory

创作不易,如果这篇文章对你有用,记得点个 Star 哦~

上一篇 下一篇

猜你喜欢

热点阅读