Web services测试对于开发和测试团队来说提出了一系列崭新的问题。JUnits可以创建用来测试Web
service的一部分功能,但是确保充分验证所需的总体功能性,它却不能提供,同时它也会使更新数据值变得困难。还有许多需要被测试的Web
service组件仍未找到合适的、更加通用的测试工具。由于Web service测试是一个在开发过程中很早就涉及到外部合作伙伴的领域,所以格外危险,可能很快就会变成一场恶梦。
SOAPtest提供了一套完整的针对Web service的测试工具,使开发团队和(或)测试团队能够利用一个一致的工具,对从Web
Service定义语言(WSDL)确认到无需自己构建和更新测试客户端的性能测试,来证明Web services是否合适。
SOAPtest的一个主要特征是该工具支持大量数据源。生成测试数据可能是耗时的,并易于出错,但是SOAPtest工具有效地减轻了所有这些问题。SOAPtest支持来自任何可通过ODBC/JDBC连接的数据库的测试数据,例如.csv文件、内部表、Excel电子表格,或者任何上述类型文件的集合都支持。增加一个数据源是非常简单的,您只需要选择数据源的类型和位置。我使用的是指南中提供的Excel电子表格。
首先,我运行一系列WSDL确认。WSDL通过描述服务和标识位置来控制对Web service的访问。屏幕界面相当直观,我能很快就验证一组WSDL文件。
您也可以检查任何URL链接在WSDL中是否依然有效。最有趣的是该工具能够执行Web Services互操作性组织确认。该工具能够生成一份印象深刻的报告,报告可由开发和测试团队进行分析,并酌情分发给您的合作伙伴。
该工具还支持WSDL比较和回归测试,使开发团队能够在其他测试之前轻松地获得并确认WSDL变化。
一旦WSDL得到确认并生效,下一个关键步骤就是确保Web service操作在单元测试层次上的有用性。这是通过创建一组单元测试来完成的,按照逻辑划分每组单元测试都属于一组测试套件。SOAPtest支持正面测试(测试期望的场景)、反面测试(错误条件下的测试)和回归测试(执行改变确认)。利用该工具,测试数据可以全部或部分来自各种数据源,或者由工具快速生成。在数据生成方面,该工具具有大量的功能,并有能力根据用户定义的一系列规则来生成数据。但有一个缺点就是当我试图仅仅保存某个独立测试本身时,却不知道如何完成。
当开发人员完成了单元测试,SOAPtest工具才能够提供创建实际场景测试的功能。在测试过程中,场景测试表现了业务场景的再现。场景测试可以从头创建,也可以通过一系列已经生成的单元测试与测试团队定义的附加测试相融合的联合体得到。
SOAPtest提供了数据确认能力的范围。数据可以由元素确认,或者仅由那些您想比较的元素来确认。
Web services的另一个关键方面是其异步特性。那些期望使用其他应用程序的传统异步响应的测试工具在处理Web
services的这个典型方面时遇到了困难。SOAPtest提供了对那些使用Parlay、SCP和WS-Addressing通信协议的异步调用进行测试的功能。这很关键,因为大多数这些服务的性质不能直接得到确认或者响应。SOAPtest包含一台Tomcat服务器,当部署了结果回调异步模式时,Tomcat服务器使SOAPtest能够测试期望的“回调”响应。当使用了回调测试时,一个建议的更新是让Tomcat服务器自动启动。一组异步测试的结果如图1所示:
当开发Web services时,另一个关键细节与安全的重要性有关。揭示Web services的本质特性需要安全考虑;因此,测试安全特性对任何Web
service的确认测试都是不可缺少的。SOAPtest提供了一个加密工具,能够支持对消息的全部或者部分加密。该工具提供的加密标准包括三重DES、AES
128、AES 192和AES 256。这些数字代表密钥的位数。当使用加密测试时, 一定要安装JCE(Java密码术扩展)Unlimited
Strength Jurisdiction Policy File,因为没有它测试就无法工作。
SOAPtest所提供的其他关键安全特性包括XML签字工具、XML 验证工具和对用户名和SAML标志的支持。XML签字工具提供数字签名功能。如果您的Web
service需要某种数字签名,该工具能用来验证其功能性。同样,XML验证工具允许用户进行加密/解密/验证数字签名消息,方法是利用公钥/私钥存储文件。支持的密钥存储文件格式包括JKS、PKCS12、BKS和UBER。
安全声明标注语言(SAML)为交换安全信息提供了一个标准。SAML为Web services提供了一个交换认证和授权声明的方法。这赋予团队在整个组织中提供身份管理服务的机会。在出现一个失败之前,SOAPtest
支持SAML验证。
如果您的Web service测试不具备上述测试的特征,SOAPtest将通过提供自定义脚本功能来提供最高的灵活性。脚本可使用Java、JavaScript或者Jython,以及支持文件导入的工具来编写。为了完成测试,脚本代码能够完成任意所需的其他测试逻辑。
在测试Web services时,另一个关键方面是确认性能需求和识别性能的界线。在Web service测试的工具中,SOAPtest相当独特,这是因为它在负载测试领域所提供的强大功能。
要访问SOAPtest的负载测试工具包,从左侧导航面板中选择Load Test选项卡。现有的场景可以利用以前的功能测试,也可以生成新的测试场景。
该工具提供了通过约束相关机器来在整个网络中运行这些测试的能力。当您能够避免本地机器局限性的时候,这也使得负载水平显著地增加。
通过创建用户配置文件,可以将功能测试和负载测试合为一体。每个配置文件由一个或者多个功能测试组成,并且能被加入到每个负载测试或者从每个负载测试中删除。我使用的配置文件是基于前面创建的正面和负面测试场景的。
也可以延迟每个配置文件,以便更好地监视每个功能测试对负载的影响。配置文件比率可以通过使用与该场景相关的Profiles选项卡来调整。在整个计划的测试周期中,它以图形显示信息,允许对用户数量和每秒钟的点击数进行调整。很简单,在图的任何地方点击右键,创建一个点,然后把那个点移到合适的位置。每秒钟的点击数和用户的数量也可以动态地调整。
我创建的配置文件以用户数量的缓慢增加为初始,随后每分钟都有显著增加,当测试进行到一半时,再缓缓减少。我也改变了我的用户配置文件比率,随着时间的变化来减少正面测试的数量。测试的持续时间也完全由用户决定,且它可以持续数天提供数据。我选择3分钟作为精确度。运行测试,结果如图2
所示。
我们也能看到一个基于文本的图形摘要(参见图3)。
很多操作系统统计数据都可以添加到这个测试工具中并用其进行监视。SOAPtest 支持添加SMNP、Windows
Perfmon和JMS监视数据包。我使用的是默认的windows系统。
SOAPtest的报告根据所有测试结果生成。报告可以生成HTML、XML或者.csv 格式。
结束语
总之,SOAPtest 提供了一个跨越整个开发生命周期的有用的Web service测试资源。它的界面非常简单,对于开发者和测试者来说很容易掌握。它鼓励整个团队来共享测试,并且提供了能支持最小单元测试工作的测试套件,以扩充Web
service负载测试。它支持多种数据源、复杂的测试场景创建和自动化测试。
异步的Web service确认和复杂的安全验证是把SOAPtest和其他测试产品彻底区别开的其他特征。