笔者是软件测试方向的硕士研究生。作为应届生拿下了20余个软件测试、测试开发的offer。
《校招生如何准备测试》系列会将我的测试理论体系与大家分享、探讨和学习。本期主要串联一下什么是测试、软件测试测什么(测试类型)。
Q:什么是软件测试?
下面是大模型、搜索引擎各自定义的软件测试概念:
Chat-gpt(3.5):软件测试是指通过运行软件系统或应用程序,以验证其是否符合设计要求、功能规格和用户需求的过程。软件测试旨在发现软件中的错误和缺陷,并确保软件的质量、可靠性和稳定性。这包括对软件的各个方面进行检查,如功能测试、性能测试、安全性测试、兼容性测试等。软件测试是软件开发生命周期中至关重要的一部分,可以帮助提高软件质量,并最大程度地减少软件上线后出现的问题和风险。
百度百科:软件测试(英语:Software Testing),是使用人工操作(手动测试)或者软件自动运行的方式(自动化测试)来检验软件是否满足用户需求的过程。
总结一下,测试是发现bug的行为、是对需求的验证,也是保障质量的活动,这些定义比较宽泛,但也概括了大家对于测试的理解。接下来,我们换个视角,看看相关研究关于测试的定义,下面选取了具有代表性的几个定义加以分析:
在软件测试的经典著作《软件测试艺术》一书中认为:“测试是为发现错误而运行一个程序或者系统的过程。”
在《软件测试完全指南》一书中指出:“测试是以评价一个程序或者系统的属性为目标的任何一种活动。测试是对软件质量的度量。”
显然,以上定义从认为软件测试发生在软件开发周期的末期,其主要目的是发现错误变化为软件测试是对软件质量的度量。这是认知上的一种变化,也为软件测试的发展提供了新的方向。测试不只影响软件的编程和运行,同时能够影响软件技术任务书和软件设计,而且在项目开始时需要进行相应的测试工作。在这一时期,各种软件测试技术以及软件质量保证体系应运而生;软件测试流程被细化分为各个阶段,并且相应的测试技术为各个阶段的软件测试提供保障。
既然测试的目的是为了保证软件质量。那我们就有必要好好了解一下软件质量的相关知识。因为测试是为了保障质量,那软件质量的不同特性就需要被测试都覆盖到。
Q:什么是质量模型?都有哪些质量模型?
这个问题再次简述一下,目前主流的软件质量模型主要分为两类,层次模型和关系模型,在这里我们主要介绍层次模型(图1),比较著名的层次模型包括 McCall模型、Boehm模型和ISO9126质量模型。我国GB25000对以上模型做了定制化,
根据GB/T 25000.10—2016对质量模型的定义:“定义的特征集以及它们之间的关系集,为规约质量需求以及评价质量提供了一个框架。”其中GB25000规定了8个质量特性(感兴趣的可以看一下GB25000)。
图1质量层次模型
Q:软件测试测什么?
从GB25000质量模型的角度看:
软件质量特性包括:功能、性能、兼容性、易用性、可靠性、信息安全性、维护性、可移植性等8大质量特性,同时也对应着测试的考虑方面,也就是我们常说的功能测试、性能测试、可靠性测试、信息安全测试等。
如图:
图2 GB25000质量模型
将以上质量特性展开,具体可以包括以下几个方面:
功能性:测试功能实现和预期结果是否一致
性能效率:考虑系统的时间、容量、资源利用率等方面
兼容性:共存性(与哪些软件不能共存?)、互操作性(比如文件的上传与回收)
易用性:可辨识性、易学性、易操作性、用户界面舒适性等
可靠性:容错性(考虑有故障的情况、也就是异常输入的情况)
信息安全性:保密性(确保授权后才能访问相关内容)
可维护性:模块化(高内聚、低耦合等)、易分析、易修改
可移植性:适应性、易安装、易替换
当然会有人质疑,接口测试呢?在笔者看来接口测试也是功能测试的一种,只是接口可以直接去测试后端代码,能更早、更充分地发现后端代码存在的质量问题
下面是本系列的文章目录:
本期小tip
欢迎大家加入我们的社区一块学习、交流,此外我们也提供短期的面试辅导,让您在短期内具备应付大多数面试的测试理论水平。
好了,以上就是本文的全部内容,如有问题可留言讨论。
我们正在组建测试开发方向的求职交流社区,如果您对软件质量管理方面感兴趣,可以在QALog公众号-聊天页-菜单-交流群,加入了解。
欢迎点赞、评论、收藏,it's important for us.
Searching for QALog