您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 信息化系统项目测试验收方案
信息化系统项目测试验收方案1.项目测试、验收方案项目测试计划测试是项目质量的重要保证,因此必须高度重视项目的测试工作。在本项目中,我们将着重进行以下三类测试:项目组内部测试主要实施者为我中心项目测试小组,该测试小组主要负责对整个测试过程的组织和实施。测试小组为整个系统测试的组织者和实施者。在项目组内部测试的过程中,除测试小组外,各分系统的开发者不仅是测试组测试前的“自我测试者”,同时也要承担一部分其它的测试任务,主要是对其它分系统的测试。通过这种方式的测试,一方面可以强化各个子系统在技术上的沟通,同时也可通过对他人开发的功能模块的测试发现自身所存在的不足之处。项目组内部测试要达到的目标是消除功能上的错误,排除系统的稳定性隐患,基本上达到系统的预定设计目标。业务人员测试在业务人员测试之前,系统必须经过项目组的内部测试,并经测试主管签字后,方可组织业务人员进行测试。业务人员测试的目标是看系统功能设计是否能够满足实际的需要,操作上是否简便,界面是否友好,并确认系统所产生的数据是符合业务需要的。压力测试应用服务器处于分布式计算的核心位置,它们之间的交互通常很难测试。分布式开发、大型的开发者团队以及对代码日益组件化的期望都有可能使应用服务的开发变得越来越容易隐藏错误。这些类型的错误极难检测出来。压力测试是检测这类代码错误的一种有效方法,但是只有在压力系统设计得比较有效的情况下才能发挥作用。1.1测试方法传统的测试方法包括某种形式的简单单元测试,通常由开发人员执行。设计这些测试需要了解软件的内部知识,并且这些测试几乎总是针对产品的非常小的、特定的部分。这些类型的测试非常适合与其它代码组件极少交互,甚至没有交互的简单Web服务。功能验证也是一种测试过程,在这个过程中,对产品源代码了解有限的设计者进行测试以确认产品或服务的核心功能。设计这种测试是为了证明这个核心功能符合某个规范这种测试也是适合简单的Web服务,使您可以检查服务是否能够正确执行它的各个功能。系统测试通常是在功能验证阶段完成,验证了核心功能后进行。它倾向于把整个系统作为一个整体来查找问题弄清Web服务作为系统的一部分怎样运作,以及Web服务相互之间如何交互。由于系统测试是在开发生命周期快结束时才进行,所以通常不能给它分配足够的时间来完成。又因为紧张的发行日程安排以及开发的各个重要阶段的后移,系统测试阶段经常被忽略,并且一些通常都可以发现的、少见的错误都不能被检测到。即使发现了这种错误,这时也来不及确定错误的原因并设法修复它们了。因此,在查找代码错误时,必需把系统测试应用设计得尽可能高效。系统测试通常由三部分组成,它们是:性能:这涉及到确定相关的产品统计数据的过程。例如:每秒有多少条消息,一个服务可同时接受多少个用户。压力(或称工作负载平衡):它与另两个部分不同,因为它被设计为通过应用很大的工作负载来使软件超负荷运转。如果压力测试通过对产品保持高强度的使用(但不超过性能统计数字确定的限制)能有效地执行,那么它就经常能够发现许多隐蔽的错误,而这些错误用上面提到的任何其它技术都是发现不了的(这些错误也经常是最难修复的)。从检测代码错误这方面来说,可以证明这三个系统测试组件中效率最高的是压力测试部分。但由于这个过程经常跟系统的其它要素或功能测试混淆在一起,所以这个过程涉及到的方法还没有被正确着手处理或实现。1.2压力下的错误使用压力测试,有两种错误类型是:内存泄漏:一种极难检测的现象。内存泄漏经常发生在已发行的产品中,原因很简单,很难设计测试用例来检测它们。使用简单的功能测试,几乎发现不了内存泄漏问题,因为在产品完成之前测试没对产品进行足够多的使用。内存泄漏通常要求操作要重复非常多的次数以使内存消耗达到能引起注意的程度。并发与同步:压力测试在查找并发性问题上非常出众,这是因为在任何一个测试生命周期中,它都应用了许多不同的代码路径和定时条件。一般的规则是,压力测试运行的时间越长,涉及并应用的代码路径组合和定时条件就越多。当然,这也的确使得这些问题很难再现(错误可以在5分钟或5天后发生)。死锁、线程泄漏以及任何一般的同步问题通常只能在压力测试阶段被检测出来。这些类型的问题很难通过执行单元测试来发现。开发人员不会一直考虑他或她的代码将与其它地方的代码(在执行单元测试时这些代码可能还没写出来)进行交互。1.3现有的压力测试工具有许多声称能够对产品进行压力测试的可用工具目前正在开发中。被广泛应用的是针对Web服务的那些工具。然而,这些工具中有许多只是简单的HTML/SOAP生成器,它们模拟许多客户机连接,并因此对Web服务器生成高负载(这对于查找Web服务器的问题很有用,但对于查找Web服务的问题就没那么有用了)。这些工具对基本的压力测试比较有用,但它们经常是仅仅扩展功能验证阶段来重复地执行相同的功能任务。如果足够的时间和资源可用,就可以通过创建定制构建的压力测试系统来实现更有效的测试。由于压力系统的设计者通常对要测试的产品和Web服务有更多的了解,所以他们将能够确保压力系统可以用于哪些具体的代码区域。1.4设计压力应用设计试图对Web服务进行压力测试的压力测试系统时,要让它们以某种特定的方式运行代码。这些风格超越了功能验证,目的是要弄清楚被测试的Web服务是不是不仅能做我们认为它能做的事,而且在被施加了某些高强度压力的情况下仍然继续正常运行。压力测试必须对Web服务应用四个基本条件。许多已建立的压力系统应用了这些条件。有效的压力测试系统将应用以下这些关键条件:重复:或许最明显的且最容易理解的压力条件就是测试的重复。换句话说,测试的重复就是一遍又一遍地执行某个操作或功能,比如重复调用一个Web服务。功能验证测试可以用来被弄清楚一个操作能否正常执行。而压力测试将确定一个操作能否正常执行,并且能否继续在每次执行时都正常。这对于推断一个产品是否适用于某种生产情况至关重要。客户通常会重复使用产品,因此压力测试应该在客户之前发现代码错误。许多最简单的压力系统只实现这一个条件,但简单地扩展功能验证测试来多次重复并不能构成一个有效的压力测试。当与下面的一些原则结合起来使用时,重复就可以发现许多隐蔽的代码错误。并发:并发是同时执行多个操作的行为。换句话说,就是在同一时间执行多个测试,例如在同一个服务器上同时调用许多Web服务。这个原则不一定适用于所有的产品(比如无状态服务),但是多数软件都具有某个并发行为或多线程行为元素,这一点只能通过执行多个代码示例才能测出来。功能测试或单元测试几乎不会与任何并发设计结合。压力系统必须超越功能测试,要同时遍历多条代码路径。至于怎么做到这一点取决于具体的产品。例如,一个Web服务压力测试需要一次模拟多个客户机。Web服务(或者任何多线程代码)通常会访问多个线程实例间的一些共享数据。因额外方面的编程而增加的复杂性通常意味着代码会具有许多因并发引起的错误。由于引入并发性意味着一个线程中的代码有可能被其它线程中的代码中断,所以错误只在一个指令集以特定的顺序(例如以特定的定时条件)执行时才会被发现。把这个原则与重复原则结合在一起,您可以应用许多代码路径和定时条件。量级:压力系统应该应用于产品的另一个条件考虑到了每个操作中的负载量。压力测试可以重复执行一个操作,但是操作自身也要尽量给产品增加负担。例如,一个Web服务允许客户机输入一条消息,您可以通过模拟输入超长消息的客户机来使这个单独的操作进行高强度的使用。换句话说就是,您增加了这个操作的量级。这个量级总是特定于应用的,但是可以通过查找产品的可被用户计量和修改的值来确定它。例如,数据的大小、延迟的长度、数量的转移、输入速度以及输入的变化等等。单独的高强度操作自身可能发现不了代码错误(或者仅能发现功能上的缺陷),但与其它压力原则结合在一起时,将可以增加发现问题的机会。随机变化:最后任何压力系统都多多少少具有一些随机性。如果随机使用前面的压力原则中介绍的无数变化形式,就能够在每次测试运行时应用许多不同的代码路径。下面是几个关于怎样在测试生命周期内改变测试的示例。使用重复时,在重新启动或重新连接服务之前,可以改变重复操作间的时间间隔、重复的次数,或者也可以改变被重复的Web服务的顺序。使用并发,可以改变一起执行的Web服务、同一时间运行的Web服务数目,或者也可以改变关于是运行许多不同的服务还是运行许多同样的实例的决定。量级或许是最容易更改的,每次重复测试时都可以更改应用程序中出现的变量(例如,发送各种大小的消息或数字输入值)。如果测试完全随机的话,因为很难一致地重现压力下的错误,所以一些系统使用基于一个固定随机种子的随机变化。这样,用同一个种子,重现错误的机会就会更大。一个压力测试通常会结合上述的所有原则,并且在允许的范围内尽可能长时间地运行。测试被允许的执行时间越长,就可以遍历越多的代码路径,并且发现的错误也越多。当然,一旦找到错误就必须诊断并修复它。由于一个代码错误可以在压力测试运行多日以后自己显示出来,所以系统必须保证当出现错误时所有可用的调试信息都被生成—否则可能就必须花费同样多的时间来重现这个错误。测试是软件开发过程中至关重要的部分,并且一个重要的、经常被曲解或忽略的部分是压力测试。遵循上面的原则,就可以设计并实现有效的压力测试系统,用来查找一些与您的代码相关的、比较隐蔽的问题。无论是利用预先写好的工具,还是创建一个完全专用的压力系统,压力测试都是用于查找问题的本质方法,并能最终提高系统的质量。测试的主要内容包括:1.5功能测试测试目标确保测试对象的功能正常,符合业务办理逻辑技术利用有效的和无效的数据来执行各个用例、用例流或功能,以核实以下内容:在使用有效数据时得到预期的结果。在使用无效数据时显示相应的错误消息或警告消息。各业务规则都得到了正确的应用。完成标准所计划的测试已全部执行。所发现的缺陷已全部解决。需考虑的特殊事项无1.6用户界面测试测试目标核实以下内容:通过测试对象进行的浏览可正确反映业务的功能和需求,这种浏览包括窗口与窗口之间、字段与字段之间的浏览,以及各种访问方法(Tab健、鼠标移动、和快捷键)的使用窗口的对象和特征(例如,菜单、大小、位置、状态和中心)都符合标准。操作符合业务人员的习惯,技术为每个窗口创建或修改测试,以核实各个应用程序窗口和对象都可正确地进行浏览,并处于正常的对象状态。完成标准成功地核实出各个窗口都与设计保持一致,符合业务人员的操作习惯。需考虑的特殊事项无。1.7性能评测测试目标核实所指定的事务或业务功能在以下情况下的性能行为:正常的预期工作量(50个并发用户访问时)预期的最繁重工作量(200个并发用户访问时)测试的主要内容包括:正常的业务办理。调用楼盘。调用档案材料。大数据量的查询和统计。技术使用为功能或业务周期测试制定的测试过程。通过修改数据文件来增加事务数量,或通过修改脚本来增加每项事务的迭代数量。脚本应该在一台计算机上运行(最好是以单个用户、单个事务为基准),并在多个客户机(虚拟的或实际的客户机,请参见下面的“需要考虑的特殊事项”)上重复。完成标准系统能否正常完成功能。响应时间是否能达到合同要求。需考虑的特殊事项综合的性能测试还包括在服务器上添加后台工作量。可采用多种方法来执行此操作,其中包括:直接将“事务强行分配到”服务器上,这通常以“结构化查询语言”(SQL)调用的形式来实现。通过创建“虚拟的”用户负载来模拟许多个(通常为数百个)客户机。此负载可通过“远程终端仿真”(RemoteTerminalEmulation)工具来实现。此技术还可用于在网络中加载“流量”。使用多台实际客户机(每台客户机都运行测试脚本)在系统上添加负载。性能测试应该在专用的计算机上或在专用的机时内执行,以便实现完全的控制和精确的评测。性能测试所用的数据库应该是实际大小或相同缩放比例的数据库。1.7负载测试测试目标核实所指定的事务或商业理由在不同的工作量条件下的性能行为时间。50个用户情况下应用系统速度和服务器的工作负载情况。200个用户情况下应用系统
本文标题:信息化系统项目测试验收方案
链接地址:https://www.777doc.com/doc-2691657 .html