APP下载

软件测试在软件开发中应用的探讨

2018-11-09吴文庆修雅慧

职业技术 2018年11期
关键词:测试用例软件测试代码

吴文庆,修雅慧

(1.苏州市职业大学 计算机工程学院,江苏 苏州 215104;2.齐齐哈尔医学院,黑龙江 齐齐哈尔 161006)

0 引言

软件开发(Software development)是根据用户要求建设、开发软件系统或者部分软件的过程,涵盖需求捕捉、分析、设计、实现和测试等工作。软件测试(Software Testing)则是促进软件的正确性、完整性、安全性和质量的过程,主要用于比较预期输出和实际输出之间的差异。现代社会发展对软件的需求越来越大、越来越复杂,这要求相关单位和工作人员加大软件开发力度,同时通过测试等工作保证软件性能,满足实际要求。

1 软件测试的目标与流程

1.1 软件测试的目标

软件测试是一系列工作的总称,是指在规定的条件下对程序进行操作,发现错误、衡量质量,评估它是否能满足设计要求的过程,该过程的对照目标是预期设计要求。通常软件测试的目标包括三个方面,即避免开发风险、降低常见风险、了解软件性能,测试对象则包括程序、数据和文档。以性能评估为例,一款软件的交互价值、程序完善度、性价比都会影响其性能。如常见的游戏软件,若界面清晰简洁,操作就比较容易,交互体验良好;如果界面元素过多且复杂难辨,玩家的兴趣就难以保证了。这是在软件开发过程中将测试列为五个基本项目的主要原因之一。

1.2 软件测试的流程

软件测试的流程包括六个基本步骤,即拟定测试计划、挑选测试用例、启动测试计划、提交缺陷问题、设计优化调整、提交测试成果。软件测试过程中也应进行管理,主要包括软件测试的过程、评价方法、参数选取,进行配置管理和测试风险分析、控制测试成本,等等。

测试计划是软件测试的第一步,要求针对不同对象目标分别拟定,如测试对象为数据,要了解数据在软件中是否能够被读取、执行,是否满足系统上下限,等等。在软件测试过程中,尤其是大型软件,需要了解的项目较多,难以一一测试,因此会选择较具代表性的软件作为用例,要求其覆盖到关键性的测试需求,如主程序、核心参数等。测试活动开始前,需对选定对象进行分析,判断其是否满足“启动准则”(EntryCriteria),如果分析结果理想,则启动测试,反之则继续重复“挑选测试用例”环节。测试工作中,要将测试结果与标准参数比对,了解其中差异,明确问题以及缺陷,进行提交、设法消除。完成消除后,还要进行二次测试甚至三次、四次测试,直到选定的目标对象在参数、性能上达到或高于设计标准,满足“完成准则”(ExitCriteria),结束主体测试工作,撰写并提交测试报告,记录核心参数用于实际工作。软件测试工作的流程如图1所示。

图1 软件测试工作的流程

2 软件测试在需求分析阶段的应用

在需求分析阶段,软件测试的主要工作内容是记录客户需求,根据客户的要求提炼各类核心信息,并与开发项目负责人进行沟通,了解各项工作的进度安排,拟定测试计划。如客户需求设计一款智能软件,用于扫地机器人的性能改善,根据客户需求,软件核心参数应该是设备对作用力的感知、障碍物的感知、工作目标(垃圾)的处理以及与之对应的集成技术、传感技术等。由于集成技术和传感技术属于通用技术,不必额外进行技术测试,因此选定“对作用力的感知、障碍物的感知、工作目标(垃圾)的处理”作为测试对象。计划拟定后,了解整体软件开发计划,假定开发活动预期为90天,则将第一轮测试活动定在第51个工作日,以保证调整优化的时间充沛[1]。

3 软件测试在设计过程中的应用

进入设计阶段后,软件开发已经处于实质工作中,这一阶段的测试工作包括两项基本内容,一是不断根据实际工作情况调整原定测试计划,二是根据阶段设计结果进行必要的分项目测试。通常来说,软件开发过程会存在一些未知变数,比如客户需求的变化,此前客户需要软件辨识5种语言,随着业务变更,客户又要求软件辨识至少7种语言,这意味着测试时必须在语言相关环节增加两项内容,以满足客户的实际需要[2]。分项目测试在大型软件设计过程中十分常见,如电子竞技类游戏,涉及到很多程序,每完成一个阶段工作后,需要进行一次小范围测试,了解包括参数设定、人物动作、游戏背景等软件的情况。

在对人物动作进行测试时,一般应用骨骼动作法或者有限元分析法,以虚拟软件操作人物的动作,了解动作协调性、变形幅度等,再按标准参数进行微调,直至渐趋完善。

4 软件测试在代码编写阶段的应用

代码编写是指技术人员应用各类程序进行软件设计、制作,该阶段的测试内容包括单元测试、测试用例编写、接受代码完成报告,等等,核心工作是编写测试用例。在软件设计开发的过程中,很多环节需要单独进行测试,单元测试可由设计人员自己负责,而较为复杂的多参数测试则需要人员提供测试用例、测试脚本等,供项目小组审阅、共同进行测试[3]。

如一款指纹密码锁软件的开发,在代码编写阶段,要求重视按压强度、手指纹理之间的细微差别,这种差别难以通过一个模型完全涵盖,设计人员完成小单元的简单测试后,根据设计要求出具测试用例,供项目组进行有效性分析[4]。在编写用例的过程中,要求严格应用代码语言,避免出现代码输入错误、产生程序BUG等情况。代码是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。在软件开发过程中,不同软件制作所使用的代码存在差别,编写过程中,也要求注意书写的准确性。图3中,代码出现错误,将其应用于测试用例编写,必然影响测试成果,正确的编写如图4所示。

图3 测试用例编写中出现的错误代码

图4 测试用例编写的正确代码

5 软件测试在初步完成阶段的应用

软件测试一般被看做是软件开发工作的组成部分之一,相关工作服从于项目整体安排,大型软件系统的设计开发被分成多个阶段,每一个阶段都是相对独立的,软件测试工作也因此需要在初步完成阶段进行,以便及时发现、处理问题。初步完成阶段测试工作的内容包括更新测试用例、追踪处理缺陷、出具阶段测试报告三个方面,完成后进入下一轮测试循环[5]。

在上一轮代码编写阶段,出具了覆盖核心技术的测试用例,初步完成阶段需要针对该用例进行测试,包括集成测试、确认测试、性能测试等,一般采用应用模拟、应用实践两种方式进行测试,应用模拟主要通过参数代入法在计算机环境下直接进行,由于工作状态为理想状态,因此不考虑误差影响,对所获数据进行记录,与标准参数(客户需求)进行对比,了解误差值和问题。应用实践是指将设计完成的测试用例应用于具体工作中,根据工作情况判断软件的性能,记录数据,与标准参数(客户需求)进行对比,了解设计上的问题和误差等。

6 软件测试在运行维护过程中的应用

在软件投入运行后,测试工作并不能立即停止,由于很多软件问题在测试阶段并不会完全暴露,如果投入运行后听之任之,很可能导致问题集中出现,客户的满意度、软件开发的成效也就无从谈起了。较为典型的问题比如软件漏洞,部分软件在测试时环境相对理想,但在应用中则面临来自系统兼容性、木马攻击等方面的威胁,一旦出现漏洞、造成木马侵入,软件开发的价值会大大降低。在运行维护阶段,要求软件开发方积极与客户进行联络,根据用户反映进行运维测试。

7 结语

通过分析软件测试在软件开发中的应用,了解了相关理论内容。软件测试的目标与流程一般是固定的,主要目的是降低风险、修复问题、消除软件缺陷,利用拟好的规划、针对固定的目标进行测试和优化。从应用上看,软件测试涵盖需求分析阶段、设计过程、代码编写阶段、初步完成阶段以及运行维护阶段,要求工作人员在进行软件开发的过程中严格遵照标准进行测试,保证软件功能。

猜你喜欢

测试用例软件测试代码
基于SmartUnit的安全通信系统单元测试用例自动生成
基于OBE的软件测试课程教学改革探索
创世代码
创世代码
创世代码
创世代码
EXCEL和VBA实现软件测试记录管理
基于混合遗传算法的回归测试用例集最小化研究
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究