计算机软件的测试方法研究
摘 要:
关键词:
1.引言
计算机管理系统是一种运用计算机的管理来代替手工管理的电子化系统。手工管理是比较灵活的,而用计算机管理则比较严谨、严肃和规范、可以提供正确的决策以及量化的管理、可以保证信息数据的可信可靠与完善。然而软件是一种知识高度的密集以及复杂的逻辑产品,本身是无形的,因此存在一些错误是难免的。软件产品质量的问题一直是开发用户以及开发人员所困扰的问题。软件质量是软件产品具有满足明确的或隐含需求能力的特征和特性总和。能发现软件中存在的错误的方法有很多,其中一种就是软件测试。也就是说软件测试可以作为检验软件产品是否符合要求的一种手段。软件测试的目的在于发现错误。软件测试应当把尽早和不断地测试作为开发者的准则,程序员应该避免测试自己的程序,测试工作应该由独立的专业的软件测试人员或机构来完成。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件,充分注意测试中的群集现象。软件开发人员通过使用一些设计分析的方法,并在各个阶段结束之前,严格对设计分析的结果进行技术的评审,以便满足用户的需求。人们的能力是有限的,审查时很难发现所有的缺陷和错误,而且还会在编码阶段产生很多错误,在正常投入运行后,此类缺陷与错误最终会暴露出来。软件测试需要在软件投入运行之前,对软件进行需求分析和概要设计以及详细设计与编码的复审,作为保证软件质量的关键的程序。测试人员需要做的工作是要站在用户方角度来把握软件开发整个过程与用户的沟通与交流,理顺业务的关系以及对业务需求的研究与理解,还要对其完整性与可用性和可维护性以及可靠性与正确性进行必要的测试。
2.软件测试方法
2.1软件功能测试
2.1.1功能测试流程
软件功能测试也称为软件行为测试,根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。功能测试的目的就是对产品是否达到合同技术协议书规定的功能进行测试。功能测试包括逻辑功能测试、界面测试、易用性测试、安装测试和兼容性测试。软件功能测试流程如图1所示。
图1 功能测试流程
2.1.2功能测试测试用例设计
软件测试是一个为了发现所存在的错误而对程序进行执行的过程,主要是依据开发的各个阶段规格说明以及程序内部设计的一些测试用例,并运用这些测试用例来执行程序,最终发现程序错误的过程。软件测试是通过一些系统的测试方法来发现软件中的一些错误,并提供相关的诊断信息,以便能很好的修正错误,来达到预防错误与降低软件开发费用的目的。测试用例一般分为正常系和异常系,对于正常系的测试,会输入一些合法的数据,对与异常系会输入一些不合法的数据,或者是设置不完整的运行环境等。在医疗软件中有一个模块是存储医生对病人开药的模块,如果医生运行了该模块就会把医生开的药物信息存入数据库,当然调用其它的模块会把该信息读取出来,这一读,一写,就会牵涉到许多功能。根据软件的功能,写出测试用例,比如给一组正常的数据,看它是否被写入数据库,或者是给一个病人的ID号,能够在画面上正常的显示,医生给他开的药物信息。特殊用例,比如说给一个病人的ID号,而这个病人在数据库中没有信息,画面或者是模块应该做怎样的处理。所以说用例是给出的各种可能发生的情况的业务数据。
测试用例的好坏会对软件的测试质量产生直接的影响,它属于测试工作的指导性的文件。它对测试工作的指导与控制的作用等同于设计的文档对编码指导的作用,这些在大系统当中表现尤为突出以及权威。测试用例的关键内容是预期产生结果和测试所用的输入的数据是否吻合,且输入的数据应该是对测试功能整体的全面的覆盖。
2.2软件的性能测试
2.2.1软件性能测试流程
性能测试就是对产品是否达到合同技术协议书规定的性能指标进行验证。软件性能测试一般包括三个方面:性能评测、负载测试和强度测试。每一方面的测试都有其不同测试目标、测试技术、完成标准。本文主要通过负载测试,来对各种工作负载下系统的性能进行确定。负载测试通过使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。其测试目标就是验证所指定的事务在不同的工作量条件下的性能行为时间。测试技术为使用为功能或业务周期测试制定的测试。通过修改数据文件来增加事务数量,或通过修改测试来增加每项事务发生的次数。在进行负载测试时一定要注意:(1)负载测试应该在专用的计算机上或再专用的机时内执行,以便实现完全的控制和精确的评测。(2)负载测试所用的数据库应该是实际大小或相同缩放比例的数据库。软件性能测试流程如图2所示。
图2 性能测试流程图
2.2.2测试工具
性能测试的工具种类很多,简单划分为以下几种:负载压力测试工具、资源监控工具、故障定位工具以及调优工具。QA Load、SilkPerformer、LoadRunner、WebRunner都是主流的负载性能测试工具。本文采用LoadRunner作为测试工具,它也可以作为监控工具直接从中间件、数据库以及主机自身提供的性能数据采集接口获取性能指标,在负载压力测试的同时对业务系统所处的测试环境进行监控。
2.2.3性能测试指标
性能指标包括应用性能、主机性能、网络性能、多任务性能、可靠性、可用性、易用性、易学性、负载均衡等性能指标。
本文的合同技术协议书主要考察系统的功能模块在某测试点下的最大并发数和响应时间指标。测试时、对服务器的CPU使用率、CPU等待队列、磁盘传输率(Mb/s)、内存页交换率(页/s)、网络传输率(包/s)等指标进行监控,编制服务器资源占用情况表,格式如表1所示。
表1 服务器资源占用情况表
服务器 | 统计 | CPU使用率 | 磁盘使用率 | 内存页交换率(页/s) | 网络传输率(包/s) |
应用服务器(服务器IP) | 平均最大 | × × | × × | × × | × × |
数据库服务器(服务器IP) | 平均最大 | × × | × × | × × | × × |
性能测试调优是为了改善系统某些方面的性能,而对系统软件或硬件进行的修改,它与负载测试是性能测试的两个核心内容,它们是多次交替进行的。当性能测试发现问题后,通过检查如下几方面来收集系统的信息以便诊断系统:(1)应用环境(如JDK版本);(2)应用程序代码;(3)数据库配置参数;(4)操作系统配置参数;(5)硬件配置。如CPU的 个数和主频、磁盘的容量和速度及是否使用RAID,内存大小等;(6)网络状况。是否会有网络负载过重的情况;(7)问题的影响是什么,比如影响响应速度或吞吐量等;(8)多少用户遇到了问题,遇到问题的用户与其他用户的操作有什么不同(9)系统资源监控的结果是否正常,如CPU和I/O是否正常;(10)问题是否集中在某一类模块中;(11)是客户端还是服务器出现问题;(12)实际负载是否超过了系统的负载能力;(13)是否未对系统进行优化。收集完以上必要的信息后,即确定调优的具体目标,如:(1)提高系统吞吐量;(2)缩短响应时间;(3)更好地支持并发;(4)提高硬件配置(如CPU、内存、硬盘、网络等)。调优完成后,再次进行负载测试,确定调优后的系统性能指标是否达到合同技术协议书的要求。若仍未达到,则需要再次进行调优,并让开发方也改进程序。
3.软件测试工具
对软件产品进行测试常用的测试工具是白盒测试与黑盒测试。其原理是通过依据选好的测试用例来作为输入的执行程序,并对程序行为进行检验,判断是否与所期待的结果一致。黑盒测试是根据需求的规格说明书来检查程序功能能否满足它的功能,而不用涉及内部的程序逻辑结构以及一些内部特性。黑盒测试也就是通常所说的功能测试法,主要是检验程序是否与功能相一致。因此在选用测试用例时,把重点放在软件功能方面,没有涉及程序的细节以及内部的结构。所以黑盒测试应该能检验程序的功能实现情况。通过黑盒测试能发现接口的错误,数据结构以及外部数据库的访问错误,性能与初始化以及终止和一些漏掉以及不正确的功能等错误。在实际工作中,开发人员会和别的模块进行联调。这个时候只能够用黑盒测试方法。首先开发人员把所有的模块都组装起来,然后根据业务的需求,对组合好的模块进行正常系的数据操作,如果发现有错误的输出(业务逻辑的不正确),然后进行分析,找到出错点,进行分析,并修改,如果业务上没有问题,这时候就需要对异常系进行测试,一般的测试方法是对数据输入不合法的数据。比如我们现在开发出一个医疗系统的病人情况输入模块,这个模块要求输入正确的病人信息,并把它们存储到数据库中。作为测试人员,他们不知道系统内部的具体实现是什么,只知道从画面上等输入合法的数据后,在数据库中就有数据。测试人员拿到该测试模块后,首先进行正常系的测试,输入合法数据,然后看数据库,如果有数据,说明该模块的正常系通过。测试完正常系后,测试人员会输入一些不合法的数据,或者是输入的数据不完整,这时候再看数据库,如果数据库中没有数据被登录(好的情况程序会弹出个消息框,提示客户输入的数据不合法),说明异常系被通过。白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。经过白盒测试能发现一些逻辑的错误与一些假设和条件,以及一些预料之外的路径,还包括一些语法上未发现的或印刷方面的错误。白盒测试主要用在代码级的调试阶段,这也是开发过程中经常使用的。当系统开发人员开发完成某一个模块过后,需要对该模块进行测试,可能会遇到一些不可能预料的情况,比方说程序报白框了。如果代码中用到指针了,有经验的程序员可能会猜到是使用空指针了,它们会单步跟踪到调用指针的模块,也此来确认,是否真的是调用指针出了错。还有一种情况是,测逻辑表达式,也会用到白盒测试。所以说,白盒测试是代码级别的测试。
4.结语
随着信息技术的快速发展,软件规模越来越大,因此在软件开发过程中,人们所面临的问题错综复杂。然而在软件生命周期的每个阶段都不可避免出现差错。软件测试在软件开发中起着重要重要的作用。软件测试就是为了检验合同技术协议书规定的功能和性能指标是否达到标准。本文主要从软件功能测试和性能测试这两种方法来进行分析的。
下一篇:互联网安全及防范措施