软件系统的评测流程及方法研究
软件系统的评测流程及方法研究
1 引言
软件系统的开发过程中,软件测试占据着重要地位。尽管人们采取了多种保证软件质量的措施,由于软件系统的客观复杂性,人们的主观认识不可能完全符合客观实际,完美无缺,每个阶段的技术审查也不可能毫无遗漏地查出和纠正所有的设计和分析上的错误,在软件生命周期的各个阶段,都不可避免地会产生差错,这些差错迟早会在软件的生产和使用过程中暴露出来。
软件工程实践的经验表明,发现软件的时刻越晚,改正这些错误所花费的代价也越高,如果在软件投入使用之前没有发现和纠正软件的大部分错误,人们付出的代价会更高,往往会造成恶劣的后果。
广义的软件测试是对软件计划、软件系统分析、软件设计、软件编码进行的查错活动,包括代码执行和人工审查活动,测试的目的是找出软件生命周期的各个阶段的错误,有利于以后进行修改和纠正。但测试本身不修正错误,调试才会修正错误。即找错的活动是测试;分析错误的性质与位置,进行纠错的活动是调试,保证算法的正确实现。软件测试与程序测试都是查找错误的活动,差别在于查找错误的范围不同。
软件测试应该贯穿于软件生命期的各个阶段,各阶段的工作是相互衔接、相互影响的,前一阶段发生的问题自然要影响到下一阶段的工作。为了把握各个环节的正确性,人们需要进行各种确认和验证工作。
本文主要是分析软件系统评测的流程,及流程每个环节的关键活动。
2 评测流程
一般的软件系统的评测都遵循如下流程进行:
图1 软件系统评测流程
✧ 准备阶段
准备阶段主要是对评测任务进行可行性分析,识别任务的类型、规模和边界条件,识别本评测任务的相关角色及职责,建立项目流程以及管理环境。
输入
1) 委托方提供的评测任务书。 输出
1) 可将本阶段收集到的信息记录到初始的评测需求文档中
✧ 计划阶段
计划阶段主要是确认评测任务的需求及工作安排,识别评测所需软硬件资源。 输入
1) 系统相关需求文档,如业务需求、系统需求、相关技术资料等。 输出
1) 评测需求 2) 评测计划
✧ 设计阶段
设计阶段主要是确认评测方案,识别评测方法。 输入
1) 评测需求 2) 评测计划 输出
1) 评测方案
✧ 开发阶段
开发阶段主要是完成执行评测前所需的所有准备工作,包括准备测试工具、开发测试脚本、搭建测试环境等。
输入
1) 评测方案 输出
1) 相关的评测脚本 2) 评测环境配置说明
✧ 执行阶段
执行阶段主要是按照评测方案,完成对系统的评测。 输入
1) 评测方案
2) 相关的评测脚本 输出
1) 评测记录
✧ 评审阶段
评审阶段主要是对被测系统情况、评测工作情况进行评审,得出评测结果。 输入
1) 评测记录 输出
1) 评测分析报告
2.1 评测准备
本阶段重点是剖析任务、建立沟通渠道,并进行项目初始化。 本阶段主要流程和活动如下图所示:
图2 准备阶段主要流程及活动
说明:
1) 获取评测任务相关信息
通常任务书中都包含有评测任务的基本信息,包括被评测系统、评测目的、任务期限、相关联系人等。
为进行可行性分析,同时为将要开展的评测活动做准备,需要进一步获取被评测系统状况、被评测方资源(包括人员)配合情况、评测环境要求等。
2) 可行性分析
评测项目可行性分析要考虑的主要外部因素和内部因素有: ✓ 外部因素
被评测系统是否处于可被测状态 被评测方是否有足够的配合资源 ✓ 内部因素
评测方在任务期限内是否有足够人员和资源投入
3) 识别相关方及其职责
评测任务可能还需以下单位的支持:
需求方:提供系统需求、评测需求的单位。
工程监督方:监督被评测系统工程进度、工程质量的单位。 实施方:将要或已经实施被评测系统的单位。
资源提供方:根据协议对评测方提供评测资源协助的单位。 维护方:负责维护被评测系统的单位。
评测项目经理应通过委托方识别评测任务相关各方负责人及其职责,并通过委托方协调建立相关各方交流体制。
4) 建立项目管理机制
包括:
项目的文档存放机制,例如利用CVS 等文档管理软件 项目的沟通机制,例如日报、日例会等
项目的问题跟踪机制,例如Excel 、ClearQuest 等
2.2 评测计划
本阶段重点是进一步了解被评测系统,并制定评测需求和计划。 本阶段主要流程和活动如下图所示:
图3 计划阶段主要流程及活动
说明:
1) 获取评测系统相关资料信息
从委托方获取的资料包括:系统发展规划、系统需求、性能指标、系统业务历史数据等
从被评测方获取的资料包括:开发需求文档、开发设计文档、开发计划、内部测试报告、系统安装文档、用户手册等
2) 制定评测需求
评测需求内容包括被评测系统介绍、评测标准(业务指标模型、评测通过准则、评测数据与环境要求)、评测项目等 3) 制定评测计划
根据评测需求及项目进度,评估工作量,制定评测计划,包括评测资源计划、评测进度计划、风险与对策等
4) 进行资源准备
包括软硬件资源的准备、评测数据的准备、人力资源的准备等 软硬件资源的准备,应确认被评测系统的部署方案及所需软硬件资源。如果使用评测实验室内部资源,则向实验室管理员进行申请;如果内部资源无法满足,可向委托方申请协调外部资源
评测数据的准备,应确认评测数据的数据量、评测数据获取及生成方案,并估
计评测数据生成所费时间,包括背景数据导入的时间,及每次迭代对数据进行清理的时间
人力资源的准备,应根据工作量及所需技能的估计,确认所需人力资源,并向
上级领导申请,得到批准后,相关人员参与项目
2.3 评测设计
本阶段重点是确定评测方法、测试用例和场景。 本阶段主要流程和活动如下图所示:
图4 设计阶段主要流程及活动
说明:
1) 制定评测方案
评测方案内容包括评测环境、评测方法、评测用例和场景等
关于评测方法的确定:
功能测试,一般采用人工测试的方法,按照测试用例的步骤执行,并记录结果 性能测试,一般采用自动化测试的方法,利用测试工具模拟大规模请求对被评测系统施压,同时监控并记录系统的各类性能指标;具体的测试监控工具可根据系统采用的通讯协议、运行的操作系统平台等进行选择;测试监控工具根据具体情况,可由评测方、被评测方或第三方提供
关于测试用例和场景的确定:
功能测试,一般根据测试需求确定测试用例的覆盖度
性能测试,一般选取常用的、对系统性能影响显著的功能作为性能测试的用例,
并根据系统实际使用时的业务模型设计评测场景
2.4 评测开发
本阶段重点是落实评测方案中的内容,包括搭建评测环境、开发测试脚本或工具。 本阶段主要流程和活动如下图所示:
图5 开发阶段主要流程及活动
说明:
1) 搭建评测环境
被评测方负责被评测系统的安装与配置,并应保证与系统的部署说明文档的一致性。测试前,被评测方应确认评测环境的有效性,并提供相应的测试报告。 除被评测系统外的其它环境(如评测工具和监控工具),由提供方负责搭建,评测方进行配合。
环境搭建后,搭建者应提交环境搭建文档及其使用手册等资料。
2) 管理评测环境
如果被评测方需要在评测方实验室环境或评测方控制的评测执行环境中安装被评测系统,应提前提交申请,填写安装计划,通过评测方审核后方可进行安装。 安装和配置被评测系统时被评测方应协助评测方填写安装记录。 安装完毕后,被评测方填写《配置确认书》,确认被评测系统及部署的有效性。 被评测方确认评测环境后,评测执行期间原则上不允许对评测环境进行修改。如有必要,被评测方应向委托方、评测方提交变更申请,经委托方、评测方审核后方可修改;被评测方应对修改情况进行记录,并提交给评测方。
3) 开发测试脚本或工具
如果使用自动化测试工具进行测试,测试脚本一般由测试工具提供者进行开发,评测方和被评测方进行配合。
当需要进行端到端测试时,需要有外围系统进行响应,通常通过模拟器模拟外围系统;如果无现成的模拟器,通常有被评测方或评测方进行开发。
2.5 评测执行
本阶段重点是按照评测方案执行测试,并记录测试结果。 本阶段主要流程和活动如下图所示:
图6 执行阶段主要流程及活动
说明:
1) 制定检查列表
在评测执行(包括预执行、正式执行)前应进行一系列检查,以确认执行条件已满
足。检查项应包括:
检查评测环境部署是否与方案一致 检查评测系统的版本号
检查评测各系统是否可访问
检查评测各系统配置文件是否正确
清理上次执行时产生的冗余数据。抽查部分数据,检查是否已清理 检查评测系统数据量是否正确
抽查部分数据,检查评测系统数据结构是否正确 检查评测工具、监控工具是否正常 检查其他约束条件是否已满足
2) 执行预测试
预测试的主要目的是为了在正式测试前检验测试工具、测试脚本、监控工具的可用性,同时检验被评测系统有无严重问题;如果在预测试期间发现系统严重问题,评测方可向委托方提交报告,由委托方决定是否需要继续执行评测。
3) 执行正式测试
评测方依照评测方案实施评测项,并记录评测过程情况,内容可包括:执行时间、执行过程、执行结果、意外事件等,被评测方配合。
在测试过程中,要注意与被评测方进行充分沟通,尤其是出现不符合预期结果的情况时,要让被评测方认可结果并参与分析。
功能测试中,一般会有业务人员协助执行评测,评测后测试执行人员应对评测结果签名确认。
2.6 评测评审
本阶段重点是对测试结果进行分析、编写测试报告并邀请专家进行评审 本阶段主要流程和活动如下图所示:
图7 评审阶段主要流程及活动
说明:
1) 撰写评测报告
评测报告内容包括:针对评测需求中规定的评测指标模型进行的评价数据、系统质量情况、系统的能力与缺陷、评测执行情况和具体结果等。
3 结论
本文总结了软件系统的评测流程及每个阶段的关键的活动,有效的指引了软件系统评测工作的开展,具有一定通用性及指导性。
参考文献
[1] (美)乔根森(Jorgensen,P.C. )著;韩柯等译. 软件测试[M] . 机械工业出版社. 2003 [2] (美)马瑞克(Marick,B )著;韩柯等译. 软件子系统测试[M] . 机械工业出版社. 2003 [3] (美)麦格雷戈(McGregor,J.D. )著;杨文宏等译. 面向对象的软件测试[M] . 机械工业出版社. 2002