购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 软件测试价值模型及测试体系

4.1.1 软件测试价值模型

对于一个确定的系统,软件测试策略解决的问题是:基于系统规格和需求规格确定测试需求,基于用户需求验证系统能力,基于系统架构确定测试级别,基于可靠性、安全性等级确定测试类型,基于功能分解确定测试项,基于质量目标确定测试充分性准则,基于质量风险确定测试次序,基于运行环境构建测试环境,基于测试技术确定测试方法,基于抽样理论及统计技术进行测试分析。以软件系统的特征、行为、约束条件、过程模型为基础,以质量、效率、能力为驱动,构建如图4-1所示的开放、融合的软件测试策略框架。

图4-1 软件测试策略框架

特定软件系统的测试策略是该框架具象化后的特征集。基于目标驱动、结果导向、创新引导、过程改进、能力提升及质量保证,构建如图4-2所示的软件测试价值模型。

软件测试价值模型体现了软件测试的系统观、创新观、风险观和过程观,是软件测试思维转变及测试赋值、测试赋能的基础。

(1) 系统观: 基于系统工程思想,构建基于质量、效率、能力驱动的软件测试价值体系及对象主导、模式决定、流程引导、场景驱动、能力导向的测试策划模型,实现项目级策略同组织级策略关联,技术策略和管理策略综合。

(2) 创新观: 将软件测试的核心价值从错误检出、符合性验证拓展到基于系统效能、交付能力、用户价值的质量工程,构建集缺陷工程、性能工程、质量工程、价值工程于一体的技术与管理创新体系,实现测试过程模型与软件测试价值模型融合,测试驱动质量工程,测试驱动客户价值提升。

(3) 风险观: 基于质量、效率、能力(人员、技术、资源等)风险分析,将风险管控融入测试生命周期过程,实现风险管控的过程化、敏捷化和全程化。

(4) 过程观: 基于软件测试过程模型,进行过程策划、过程设计、过程改进、能力提升,建立监视测量及反馈控制机制,持续改进测试过程质量,提升过程能力。

图4-2 软件测试价值模型

4.1.2 软件测试目标体系

在一个放大的空间和时间尺度上,软件测试不再局限于错误检出和符合性验证,而是面向用户、面向对象、面向过程,以测保质、以测促研、以测促产、以测促用,形成新发展阶段的软件测试使命。软件测试目标体系如图4-3所示。

图4-3 软件测试目标体系

以测保质 就是基于质量风险、测试能力及测试目标,实施全过程、全要素测试覆盖,检出错误,对软件系统的符合性、正确性、完全性、可用性、伸缩性、交付能力进行验证、度量和评价,横向到边,纵向到底,摸清性能底数,鉴定或确认软件状态;测试左移并右看,实施全生命周期过程的错误检测、分析评价、缺陷预测、健康管理及质量工程迭代演进,持续改进并提升测试过程能力,确保过程质量;以结果为导向,关注用户体验及用户价值,测量并评价用户满意度和忠诚度,基于数据决策,持续改进,提升用户价值。

以测促研 就是基于软件开发范型、技术架构、开发模式及新的软件形态和新环境下的软件本质,建立基于缺陷工程、性能工程、质量工程、价值工程的软件测试技术体系,放大需求捕捉,建立正向激励和逆向反馈机制,提供基于缺陷数据驱动的纠正预防措施及改进建议,反哺软件研发,促进研发能力及测试技术服务能力提升。

以测促产 就是基于软件测试,建设研发−测试−产业生态,积聚研发、测试、运维力量,培育创新、自主的集软件研发、测试、市场于一体的产业生态,推进软件产业及软件测试、分析评价、认证认可向一体化、服务化及产业化发展。

以测促用 就是以用户需求为导向,摒弃一致性及狭义、庸俗化的质量思维,以任务场景驱动测试场景构建,推进基于用户体验的流程测试及交付能力测试,持续改进并提升软件的适用性、可用性,持续提升交付能力,持续提升用户体验,实现用户价值,超越用户期望。

4.1.3 软件测试体系

4.1.3.1 软件测试体系架构

持续的质量内建是软件测试的核心使命。基于测试驱动的软件质量工程是软件测试的发展方向。质量赋能是软件测试从项目到组织发展的重大跨越,基于组织战略,驱动软件测试思想和行动的跨越,是软件测试发展的高级阶段。

软件测试体系是以系统工程思想为指导,基于可重用测试框架,以软件测试技术体系为基础,以组织管理和过程管理为支撑,以基础设施及基础能力为载体的总体架构,指导系统化的软件测试实践。软件测试体系总体架构如图4-4所示。

图4-4 软件测试体系总体架构

4.1.3.2 软件测试基础能力体系

软件测试是对软件生命周期过程中各阶段构建的体系架构模型、功能结构模型、业务流程模型、数据关系模型、系统行为模型等以形式化方法和工具进行模型检测的过程活动。软件测试基础能力体系由技术能力体系、组织能力体系、管理能力体系、过程能力体系及支撑能力体系组成。软件测试基础能力体系如图4-5所示。

图4-5 软件测试基础能力体系

基于测试对象,将软件测试执行划分为三个阶段的过程活动。一是对软件代码进行静态分析和逻辑结构测试,分析编码规则,检出代码缺陷;二是对软件系统的功能、性能、接口等实现的正确性、符合性进行测试验证;三是在实际运行环境或模拟环境、虚拟环境中,对软件系统的功能性能、运行流程、操作使用、数据及环境配置等进行测试验证,对系统的适宜性、可用性及交付能力进行评价。

对于软硬件一体化系统,则需要在实际或近似使用条件的环境下,建立数据分析模型,从单一功能、性能验证向复杂环境条件下面向使命任务的能力验证转变,进行多阶段、多场景、多环境下的数据融合,实现测试回放分析、缺陷分析、测试充分性分析,持续有效地观察并控制系统响应及变化趋势,对系统效能及能力进行分析评价。不仅强调结构和功能覆盖,更加关注流程、场景和能力覆盖。

4.1.3.3 基于测试驱动的软件质量架构

软件测试是软件质量保证的重要子域,其根本目的是检出错误并验证系统的符合性。这是软件测试的初心。这里,在对系统特征、系统行为、约束条件、质量要求、潜在风险及测试能力等进行综合审视的基础上,将软件形态、测试目标同软件生命周期过程融合,构建一个旨在识别、度量、评价被测软件系统及测试过程改进的、基于测试驱动的软件质量架构,为测试策略制定及基于测试驱动的软件质量工程最佳实践提供支撑。基于测试驱动的软件质量架构如图4-6所示。

图4-6 基于测试驱动的软件质量架构

图4-6展示了在软件测试的发展阶段,对软件质量的关注点及对软件质量在不同层面上的贡献。究其实质,该框架呈现了软件测试及软件质量的发展历程。基于以需求规格驱动的软件测试,侧重于设计验证,但却对功能的适合性及可达性问题关注不够。这对如何设定测试目标,如何通过测试目标驱动测试,提出了新的挑战。这就是软件测试策略中的目标依赖问题。例如,1.2节中分析的波音737 MAX失事案例,并非功能实现的正确性问题,而是特定条件下功能的适合性问题,以及补救功能的可达性问题。除非特别熟悉飞行控制流程,能够天才般地捕捉该问题并预知该问题将引发灾难性后果,否则不可能构建这种极端测试场景并挖掘出该致命缺陷。我们无须质疑基于需求的软件测试是否能够发现这类问题,但毫无疑问,软件测试的首要目标就是检出错误,哪怕是极小概率错误。

4.1.3.4 软件测试技术体系

软件测试技术体系是软件测试技术能力体系的核心。通过业界的艰辛努力和广泛实践,构建了以体系性技术为基本架构,以基础理论、基础技术为基本元素,一系列关键引领技术支撑的软件测试技术体系。图4-7展示了一个双叠Hall结构软件测试技术体系,试图为读者打开一扇窗。

图4-7所示软件测试技术体系是图2-1所示软件测试知识地图的一个抽象框架集。在此开放、融合的技术体系下,需求驱动技术创新,创新驱动技术发展,从主动测试到被动测试,从逻辑驱动到流程驱动,从数据驱动到模型驱动,从需求驱动到剖面驱动,从手动到自动,从面向结构到面向对象再到面向服务,从规格测试到敏捷测试,从测试用例参数组合到不同测试技术的组合,基于结对测试支持端到端的自动化执行,不断集成相关要素,驱动测试技术体系不断扩展、丰富和完善。

图4-7 双叠Hall结构软件测试技术体系 jfkuZUUOw84xH38N4oAhQCBBvGiATg+b1T0jmrVBs1tJ7rbEF/Ox6KGjgFG5xtBa

点击中间区域
呼出菜单
上一章
目录
下一章
×