申利芳(天津天铁冶金集团计控电讯厂,河北涉县 056404)
软件测试在程序开发中的应用
申利芳(天津天铁冶金集团计控电讯厂,河北涉县 056404)
介绍了软件测试在计量查询统计程序开发中的作用和应用效果,通过单元测试、功能测试、性能测试等软件测试方法找出程序中存在的各种问题并加以修正,实现了对程序的纠错目标,从而完善了应用程序的功能,保证了软件的正常运行。
软件 测试 程序 性能 开发
随着公司信息化的深入发展,企业对程序在安全性、稳定性、灵活性、正确性方面都提出了更多要求,计量数据关系到公司领导在控制成本方面做出正确决策,而计量查询统计系统正是对计量数据进行各种各样的统计分析,因此,必须确保计量查询统计系统的严密性、正确性。要保证程序的正确性,就需要高度重视软件测试,完善测试方法,从而使程序在正确理论的前提下,充分地满足用户需求。
本文以计量查询统计系统为例,通过软件测试找出程序在开发时出现的一系列问题,完善了程序功能,以此来证明软件测试工作在程序开发中的重要性。
传统观念认为软件测试是在程序完成以后才开始实行的,实际上这种观念是不科学的,软件测试一般来说在项目确立之时就开始了。软件测试前后要经过以下几个主要环节:需求分析→测试计划→测试设计→测试环境搭建→测试执行→测试记录→缺陷管理→软件评估→RTM。以上各环节并不是软件测试的全部,根据实际情况有时候也会再添加其他环节,程序正式运行后如果遇到严重问题,还需进行后续维护测试。各环节之间并不是相互独立、没有联系的,也没有严格的顺序,由于实际工作千变万化,各环节出现交插和重叠在所难免。因此,在实际测试过程中要做到具体问题具体分析,具体解决。
软件测试是为了发现错误而执行程序,甚至不用执行程序的过程。它不仅是软件开发中的有机组成部分,而且在整个软件工程中占据了相当大的比重。软件测试不仅要讲究策略,更要讲究时效性。因此,软件测试的目的包括以下几点。
尽可能地为修正错误提供更多有用的信息。找到错误后进行修改是程序员的工作,但是软件测试人员如果能对如何进行错误修改提供建议,那么程序员就会在程序设计上节省时间,而且也避免了程序员在程序设计上走弯路。
软件开发出来后交测试人员进行评测,测试人员就是利用各种测试方法,通过反复测试相关数据,从而证明软件中存在哪些错误,以便程序员进行修改。
用户需求是程序员开发软件的依据,因此,软件测试人员就需要根据用户需求进行程序评测,及时地提醒程序员按照用户需求开发软件。
计量查询统计系统涉及到计量部门、企划处、外经处、质检中心等部门的使用,数据处理量十分巨大,对数据的实时性要求也很高,因此,该程序的开发必须要保证数据的正确性,消除冗余,而软件测试的目的正在于此。在实际的程序开发中,软件测试的应用不尽相同,各有侧重,现以计量查询统计系统为例,重点对该系统的数据分析模块进行检测,阐述软件测试的具体应用。下面主要对测试执行中的几个重要方法,即单元测试、功能测试、性能测试进行介绍。
单元测试是对软件的基本组成单元进行的测试。它是软件动态测试的最基本也是最重要的部分之一,其目的是检验软件基本组成单元的正确性。要想做好单元测试,首先要对程序的业务进行深入了解,如果对产品业务一无所知,只能测试出单纯的软件缺陷,而面对与产品业务相关的缺陷,则很可能视而不见,单元测试也就无从谈起了。
在计量查询统计系统的测试中,因为该系统业务性强,即使是小到一个函数,也可能因涉及到相关业务而无法使用。同时,需要综合考虑各方面的因素。例如,用户提出要查询同一车的皮毛时差,即过皮重时间与过毛重时间的差值,并把符合条件的记录显示出来。若使用原来的软件,编程人员只是简单使用一个计算时差的函数datediff(datepart,startdate,enddate)。单纯就函数而言,这样使用是没有错误的,但是经反复数据测试后发现只用该函数解决问题是不正确的。在计量系统中,过磅车辆有几种:外发、进厂、倒运等。外发车辆要先过皮重后过毛重;进厂车辆需先过毛重再过皮重;倒运车辆不用过皮重,直接从皮重库里调皮重。因此计算皮毛时差函数datediff,即satertdate减enddate会出现负数,当用户输入查询条件“皮毛时差小于1小时”时,所有负数都是符合条件的,而根据实际业务,查询结果与用户期望结果是不同的,真正结果按数学值表示应该是:-1<皮毛时差<1。函数使结果范围扩大,把皮毛时差<=-1也包含在内,这样是不对的。同时,如果求皮毛时差>1,则会使结果范围缩小。解决问题的方法就是给函数加绝对值,即abs((datediff(datepart,statrdate,enddate))。从这个问题可以看出,如果不深入地了解软件相关业务是不可能正确实现软件的功能要求的。
功能测试是指检查程序软件是否满足用户需求。例如,在计量查询统计系统中,用户想要实现每月按司磅员过磅车辆数来进行考核,从而实现奖金的二次分配。当在测试该功能时发现轨道衡中火车倒运时不用过皮重,直接从皮重库里调皮重来计算净重,这时如果按常规对车辆计算两次,则会把范围扩大,而实际上司磅员并没有对该车进行回皮操作,因此以此来作为奖金分配依据则是错误的。解决该问题的方法就是在查询语句中将调皮重的记录屏蔽,查询语句用“psb not like‘%p’”来实现。软件的各项功能都必须进行严格的测试,同时检查数据在存取时的一致性。
性能测试是指考验程序软件的系统架构,使程序软件达到稳定、便捷、实时地实现功能的目标。随着信息化程度的广泛普及,用户在要求实现基本功能的基础上,更加注重系统性能的提高。用户的某项需求可以通过几种方法实现,而判定哪种方法最节约时间和资源就需要开发人员和测试人员相互合作,通过测试来分析数据,最后选定最适合的方法。例如,在计量查询统计系统中,有一个可对货名按时间、磅站、司磅员分组统计的功能窗口。通过使用错误推测方法对其进行测试,发现由于统计量大、涉及的数据库表比较多,在运行该窗口时数据库会出现死锁的情况,影响计量过磅系统的正常使用,造成了极大的损失。最后,经过反复的测试、试验,为在表链接时加上“with(nolock)”,使视图中涉及到的所有表不相互锁,使这一问题得到了很好的解决。
计量查询统计系统在程序开发的过程中充分地运用了软件测试这一工具,软件开发人员和软件测试人员紧密配合,边开发边评测,发现问题及时处理,在工期之内很好地完成了开发任务。计量查询统计系统于2008年正式运行,经过2年多的正常运行,基本上符合用户使用要求,各项功能也相对健全,受到用户单位的好评。但是,由于业务一直在发展,在今后仍然需要根据用户意见对软件进行修改,保证软件的正常运行。
通过在程序开发的流程中进行软件测试,简化了程序流程,提高了系统的性能,优化了程序的各项功能,同时强化了软件测试工程化理念,熟悉了软件测试的多种方法,提高了使用软件测试的能力,从而保证了软件测试的质量。
[1]贺平.软件测试技术[M].北京:机械工业出版社,2004.
[2]赵瑞莲.软件测试[M].北京:高等教育出版社,2004.
Application of Software Test to Program Development
Shen Lifang
The thesis introduces the function and application effect of software test in the development of metering query and statistics program.By means of unit test,function test and property test,problems in the program were found out and corrected. Thus,the program correction target was realized,application functions improved,which ensured software run normally.
software,test,program,property,development
(收稿 2011-10-15责编赵实鸣)
申利芳,工程师,2002年7月毕业于张家口通信学院计算机及应用专业,现从事计算机软件编程及管理工作。