并发测试(concurrency testing)(图 5)剖析了当多个用户同时访问同一段应用代码、同一个模块或者数据库纪录时的效果。它鉴别并度量了系统加锁和死锁的级别以及系统中单线程代码和加锁信号的使用。从技术角度讲,并发测试可以归为一种功能测试,不过它常常和可伸缩性/负载测试配合使用,因为它需要多用个户或者虚拟用户来驱动系统。
图 5:并发测试能够识别死锁和其他并发访问问题
压力测试(stress testing)(图 6)在系统达到饱和(指资源如 CPU、内存耗尽等情况)时来测试系统以判断其行为是否发生变更,或者是否会对系统、应用程序和数据产生不利影响。容量测试(volume testing)是和压力测试及可伸缩性测试相关联的,它可以确定整个系统能够处理的事务容量。通过压力和容量测试能够知道系统分别在处理突发的访问量增加或进行持续的大容量活动时所具有的弹性,这不包括那些因为内存泄漏或者队列溢出所引发的失败。
图 6:压力测试能够确定高容量使用时的效应
一旦应用环境开始工作并进行了性能优化,可以在 75%到 90%的环境利用率下进行一项长期可靠性测试(reliability testing),用来发现任何与较长的运行时间有关的问题。在应用了冗余和负载平衡的环境中,失败转移测试(failover testing)(图 7)分析理论上的失败过程并测试和测量总体失败转移进程及其对终端用户的影响。本质上,失败转移测试回答了这样一个问题:"如果一个特定的组件运行失败,用户还可不可以在最小的中断下继续进行访问和处理?"
图 7:失败转移测试:如果组件X失败,那么将发生什么情况呢?
最后,如果在环境中使用了第三方软件,或者主机供应商及其他外部来源所提供的组件,那么 SLA(Service level Agreement服务水平协议)测试则可以用来确保双方合同规范中所规定的终端用户响应时间,以及流入和流出的数据量。一个典型的协议通常会指明在既定时间范围内的活动容量和一个特定的最长响应时间。
一旦外部数据或软件到位后,对这些来源进行持续监控是明智的做法,这样就可以在问题发生时快速的采取补救措施,将对终端用户的影响降到最小。
与组件级的可伸缩性测试一样,Rational suite TestStudio、Rational TeamTest 和其他类似的工具提供了一些高级的,多用户的测试能力,它们可以用来高效进行上述的大多数或者全部的可伸缩性和性能测试。
一个实际例子
也许举一个例子是说明的最好办法。请考虑下面的情况:
通过 eRetailer 构建一个公共的 Web 书店,并在它的内容层中使用了四种由内容提供的 Web 服务。第一种服务提供目录,包括书名,介绍语和作者。第二种服务提供所有产品的当前库存信息。第三种是价格服务器,它提供商品定价信息,并根据购买者的所在地提供运费和税费信息并完成交易。最后一种服务用来保存用户档案和历史购买纪录。
表示层将用户通过 UI 图形界面输入的请求转换成 XML 并发送给相应的内容服务器。接着响应 XML 就会通过表示层转换成 HTML 并服务于用户会话。每一种内容层的服务都会根据需要更新其他的服务。(参见图 8)例如,在用户的历史购买纪录发生变更时,价格服务器必须更新相应的用户档案服务。
图8:典型的 eRetailer 应用程序的访问点
对上述的系统来说,一个端到端测试策略的起点是分别对内容层的每种服务同时应用功能测试和可伸缩性/负载测试。XML 请求被提交给每种内容服务,而相应的响应 XML 文档则被捕获,从而对它的数据内容或者响应时间进行评估。随着这些内容服务逐个的集成到系统中,通过向 Web 服务器提交事务,功能测试和可伸缩性/负载测试也都可以在集成系统中进行。事务可以贯穿整个站点进行验证,不论是为功能测试(使用 SQL 查询)还是为可伸缩性/负载测试。
在系统开发过程中,应用于所有访问点的单个测试可以被用来调协各个服务,以便使其能够在整个系统中正常运作――无论从数据内容(功能性)还是性能方面(可伸缩性)来说。当前端发现问题时(比如,通过浏览器),那些原来用来测试单个组件的测试用例和数据可以帮助我们快速定位错误位置。
网络建模的优点
作为设计过程的一部分,无论在硬件获取之前还是在最初的测试阶段中,为不同的网络架构进行建模都可以扩大端到端测试的优点。因为它可以帮助设计更有效和低错误率的网络。在部署之前进行网络基础设施的建模可以帮助指出性能的瓶颈所在,以及路由表和配置中的错误。此外,在测试中获取的应用程序事务物证可以输入到这种模型中,用来识别和分离应用程序的"chattiness" 和基础设施中的潜在问题。
结束语
端到端测试从一个概括的质量角度对计算环境进行测试和分析。每一个组件的可伸缩性和功能性在开发阶段和前期的质量评估中都进行了单个测试和集成测试。这为开发的有效性提供了诊断信息,同时为系统的发布提供了高度的质量保证。端到端测试为管理当今架构和分布式计算环境的复杂性提供了一个全面而可靠的解决方案。
当然,在需要做大量的测试和分析时,端到端测试要求有相当的专业技术和经验来组织、管理和实践。但是从商业角度来说,那些应用端到端测试的组织能够得到应用软件、系统性能和可靠性上的高度保证。最终,这些组织将获得质量的提高所带来得种种好处:更好的顾客关系,较低的运营成本和巨大的收入增长。
在过去的六年中,RTTS 作为 IBM Rational 的伙伴之一,开发并完善了自己的端到端测试方法,并与数以百计的客户一起努力确保了应用的功能性、可靠性、可伸缩性和网络性能。
文章来源于领测软件测试网 https://www.ltesting.net/