本站小编为你精心准备了软件测试技术在铁路产品开发中的作用参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
按照软件特征分类,软件测试可分为:功能测试和性能测试。功能测试是黑盒测试的1个方面,它检查实际软件功能是否符合用户的需求。一般分为:逻辑功能测试、易用性测试、安装测试和兼容性测试等。性能测试主要有时间性能测试和空间性能测试2种。通常还包括:一般性能测试、可靠性测试、负载测试、压力测试。其它分类还包括:回归测试、冒烟测试、随机测试。回归测试是指对软件的新版本测试时,重复执行上一版本测试时的用例。冒烟测试是指对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。随机测试是指测试中所有的输入数据都是随机产生的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
软件测试过程一般来说,软件测试工作从立项后就开始了,主要经历以下几个主要环节,如图1所示。需求分析是软件测试的1个重要环节,测试人员对这一环节的理解程度将直接影响后续测试工作的开展。一般而言,需求分析包括软件功能需求分析,测试环境需求分析,测试资源需求分析等。测试计划的依据主要是项目开发计划和测试需求分析结果而制定,测试计划指导整个测试过程。测试设计在测试活动的各个阶段,对测试策略、测试方法、测试用例进行制定和编写。测试环境搭建要尽可能模拟实际应用场景,满足项目的设计要求,从而达到理想的测试效果。测试执行和测试记录由测试工程师完成,主要是查找软件的错误和缺陷,并记录测试活动中出现的问题。缺陷管理是对测试活动中出现的BUG进行管理和跟踪,保证每个BUG得到及时修复。软件评估是在测试活动的最后,对软件进行全面地分析和总结。
铁路产品开发过程中容易忽视软件测试
铁路产品供应商普遍重视占领市场份额,追求利益的最大化,提升产品的服务质量,但是却容易忽视保证产品质量的软件测试,这给铁路安全运输带来巨大安全隐患。项目的开发过程通常是确定项目负责人和项目参与人、项目的方案以及项目需要完成的时间,然后投入项目的开发。研发过程中采用团队协作,项目分工到人,经过程序编写、调试,最后集成为产品,并在实验室和现场环境下进行测试实验。对于项目进展情况的掌握是通过不定期的召开会议和单独询问主要开发人员以及研发人员汇报来实现的。
在这种开发模式下,因为项目的开发过程中没有系统和独立的测试过程,所进行的测试也是以正向思维为主,重点验证软件是否实现了相应的功能,而不是软件在异常情况下的响应和处理。软件开发和软件测试本来就是不同的活动,开发人员的工作目标是创建相应模块,实现特定功能,从而会不自觉地朝这个方向努力,挑选那些使程序出错可能性较小的测试数据和手段,无法保证软件被全方位进行测试,会给项目带来隐患。正是认识到这一情况,才大力主张产品开发应进行科学和规范性管理,加强软件测试队伍建设,任命专职人员从事测试工作。利用软件领域中的相关技术,对软件进行科学、合理的测试。
如何在企业内部实施软件测试
企业想要在产品开发过程中,对产品软件展开相关测试,首先应建立合适企业特点和开发模式的测试流程;其次,对不同测试阶段和不同产品的软件和硬件的特点,拟采用不同的测试技术和策略。另外,在产品开发过程中,项目的配置管理、质量保证的等方面都应形成明确的制度。
1测试流程
企业应全面规范项目开发管理流程,对项目进展的各个阶段进行明确划分。软件测试是建立在软件开发的成果之上,即测试的对象就是软件开发的阶段性成果,如设计文档、程序代码和可执行的程序。
软件测试和硬件测试的侧重点有所不同。对于软件测试,采用比较通用的测试流程,如图2所示。软件项目的开发从项目立项开始,测试人员介入项目组,明确需求分析阶段的用户需求,针对不同测试阶段的工作重点,制定各阶段的测试计划。在设计测试阶段,测试人员需要确定各测试阶段的测试方法和必要的测试工具,搭建测试环境,编写相应的测试用例。接下来,按照测试计划分别进行单元测试、集成测试和系统测试,形成各阶段的测试报告,对测试过程中发现的缺陷进行跟踪,保证缺陷得到及时修复。为了保证软件在现场环境下能够正常运行,测试人员针对现场实际情况,制定现场验收计划,确定现场验收策略,对软件进行现场验收和评估。当软件通过了各阶段的测试,且全部缺陷得到修复,将进入到软件的阶段。软件阶段通过对软件版本的管理和控制,实现软件、维护和升级等。
对于硬件测试,需要面向硬件编程,即在硬件环境下,编写代码,实现采集、控制、通讯等功能。由于硬件产品的开发不能脱离硬件环境,因此,测试活动与硬件产品开发、过程调试、硬件联调都是密不可分的,软件测试作为硬件产品开发过程中的重要环节,“验证”和“确认”产品满足项目的设计需求,硬件产品开发流程如图3所示。硬件产品的开发,首先要明确硬件需求,预计产品达到的效果。在硬件总体设计阶段,获取硬件需求,并根据功能进行模块划分,定义模块之间的接口。在详细设计阶段,对各模块进行编程,搭建相应的硬件电路。过程调试可分为:软件过程调试和硬件过程调试两种,软件过程调试指的是在硬件电路的环境下,进行软件调试的过程,保证软件能够正确控制硬件电路和读取相应数据;硬件过程调试指的是产品电路部分的调试过程,验证电子器件之间逻辑是否符合系统设计要求,保证硬件产品稳定、可靠,不受干扰。各硬件功能模块调试成功后,需要进行整体硬件联调,各硬件模块被连接成1个整体,形成产品的雏形,在此阶段,主要验证各模块之间的接口是否符合设计要求,是否能够实现系统设计的各项功能。硬件产品经过整体联调后,形成样机。测试工程师根据产品的硬件需求说明,制定测试计划,确定测试方案和测试方法,并搭建测试环境,对样机进行硬件测试,确认产品符合硬件产品设计要求。
2软件测试技术在各阶段的运用
在软件测试实施的各个阶段,所采用的测试方法和测试策略也各不相同。下面对于测试过程的各阶段进行分别叙述。
2.1设计和代码审查
设计审查是由项目组和测试组成员组成评审组对软件设计和开发的输出进行评价,以判断确定设计和开发的输出能否实现软件产品预先定义的规格,同时通过审查标识出与项目需求之间的偏差。设计审查按《项目计划》所规定的评审点进行。因临时变更引起的突发性的评审随时进行。代码审查实际上属于静态测试。在代码审查之前,首先要对代码进行静态分析,其目的是通过对源程序分析、目测,但不执行程序,找出源代码中可能存在的错误和缺陷,对程序设计的结构属性,如分支、路径、转移等进行审查,尽可能地掌握程序的结构,为单元测试的测试用例的设计和执行提供信息。代码审查的目的是检查源程序编码是否符合详细设计的编码规定,确保编码与设计的一致性和可追踪性。检查的方面主要包括:书写格式、子程序或函数的入口和出口,数据,参数,程序语言的使用,存储器的使用,可读性,逻辑表达式的正确性,代码结构合理性等。静态分析和代码审查通常可以同时进行,通过静态分析掌握源程序结构,通过代码审查,尽量减少书写错误和隐含的逻辑错误,为单元测试提供比较稳定的环境。
2.2单元测试
单元测试是软件测试的基础,集成测试、系统测试都是建立在单元测试之上。单元测试是用来检验每个软件单元能否正确地实现其功能,满足性能和接口要求,还要验证程序和详细设计说明的一致性。从广义上来讲,单元测试包括静态测试和动态测试。静态测试就是上面介绍的“代码审查”,而动态测试则是通过测试用例、测试工具来执行程序,检验程序是否存在缺陷的过程。单元测试一般采用白盒测试方法,手工测试和自动测试相结合,针对程序内部的结构和逻辑来展开,单元测试工具一般针对不同编程语言和开发环境而设计开发的,种类很多。我们利用白盒测试进行代码测试,利用黑盒测试进行功能性测试,利用回归测试保证维护代码的完整性。单元测试工具固然有用,更重要的是测试策略,以及测试用例的设计。这也提醒我们在做单元测试的过程中,不可避重就轻,要抓住项目核心,进行科学、有效的测试,只有这样才能达到事半功倍的效果。
2.3集成测试
集成测试阶段采用白盒测试和黑盒测试相结合的方式,将每个独立的功能模块进行关联和集成,便于进行功能测试、界面测试、结构测试、数据正确性测试等。在进行集成测试前,测试工程师要搭建测试所需的硬件和软件环境,尽量模拟设备实际的工作环境。结合项目的不同特点,测试过程可以采用手工或自动测试。在进行多次重复测试和回归测试的情况下,可采用自动化测试工具对软件进行功能性检测。
2.4系统测试
在系统测试阶段,不仅要进行功能测试,还要对系统的性能、安全性、兼容性和可靠性等进行测试,系统测试涉及人机交互和复杂逻辑,因此系统测试多采用黑盒测试的手工测试方法。系统兼容性测试要考虑软、硬件的兼容性。项目开发的硬件和软件要在指定的环境下,进行多次反复的安装和反安装测试,以验证接口数据调用和驱动程序是否达到设计标准。安全性测试和软件的安全策略密切相关,安全性测试主要包括:用户访问权限、数据库安全性、文件安全性等。性能测试、负载测试等必须借助测试工具来实现。过分强调测试工具的作用,极力追求各种软件测试工具,是软件测试本末倒置的表现。实际上,测试过程中80%以上的缺陷是手工测试发现的,仅有不到20%的缺陷是靠工具测试发现的,而且这还得要求测试人员合理地使用工具。
3采用的测试模型
企业对产品开发应重点关注产品开发的过程控制,以及测试、管理。保证产品质量从源头开始。因此,测试过程更适合采用W模型,如图4所示。在W模型中,测试过程和开发过程都贯穿项目开发过程的整个生命周期,两者同时开始,同时结束,相辅相成、始终保持着同步的关系。这样做的原因是:测试工作尽早介入,软件存在问题的可能性就会降低。项目正式立项后,测试人员既可参与到项目组中,通过学习和阅读相关文档,加强对项目的了解,对项目有个整体认识,形成初步的测试思路。同时测试越早介入项目就能够越早发现问题,解决问题所花费的成本越小。如果在软件的最后阶段进行测试,发现功能设计不合理或性能不好,需要修改需求和设计,不得不返工到系统设计或需求定义阶段,会造成很大的代价,所以有必要将软件测试延伸到需求、设计阶段,对需求、设计进行验证。有资料表明,60%以上的软件错误不是程序错误,而是分析和设计错误。若把软件分析、设计上的问题遗留到后期,可能造成设计、编码的部分甚至全部返工,从而增加软件开发成本及延长开发周期等后果。同时,需求和设计阶段所产生的缺陷具有放大效应,严重地影响软件质量。因此,为了更早地发现并解决问题,降低修改错误和缺陷的代价,有必要将测试延伸到需求分析和设计阶段中去,使软件测试贯穿于整个生命周期,提倡软件生命周期测试的理念,即软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试。测试在对需求和设计阶段的测试活动主要是通过需求评审和设计评审来实现,可以更早发现问题,及时修改问题。即对软件开发阶段中的阶段性产品进行评审、走读或者回忆评审,发现其中的问题,是一种静态测试。通过静态测试,可以更早地发现问题,把问题消灭在萌芽中,将每个阶段产生的缺陷及时清除。
总结
软件测试作为专业性比较强的技术在我国起步较晚,受重视程度不够,但它是保证软件质量的终极手段,目前越来越受到了人们的关注。铁路行业的生产企业,认真做好产品质量把关,合理运用相关检测技术,将软件缺陷消灭在萌芽阶段,保证铁路运输和人们生命财产的安全。
作者:朱剑辉单位:哈尔滨铁路局科学技术研究所