在SOA环境中,测试团队超越了传统的以应用程序为中心的功能和性能测试。SOA需要整合地测试界面和服务,这些界面和服务有助于组合利用不同的系统、平台以及相关安全标准。
要测试这些应用程序时,就提出了独特挑战。
服务可能不具有用户界面
传统上,应用程序拥有 GUI 或相关的用户界面,可用于手动或自动执行功能测试。在SOA中,环境服务可能没有界面。测试员处理不同技术(例如 SOAP 和 Web 服务)下的消息和网络协议。深度暴露的服务会封装底层流程,因而要确保充分的测试范围,这是一种挑战。
处理Web服务时,我们能使用基于标准的测试工具(如 SOAPUI来应对挑战。这些工具能够为服务生成基于Web Service Description Language(WSDL)文件的测试客户机,然后客户机帮助测试员理解Web服务的运作和调用服务。
数据收集
单一SOA环境能利用来自不同内部人员和外部涉众的不同技术和不同数据格式。这需要QA团队验证所有技术和数据格式的整合。这种工作中非常关键的一个部分是在部署并执行所有测试方案之前收集正确的数据。如果事前收集了测试数据,这就确保了QA生命周期不会因为在特定测试周期中数据可能不可用而受到干扰。
这需要更广泛的设计阶段和SOA治理,以及QA团队与相关方面的协同参与。SOA治理这一中央团队主持整体SOA工作,即管理并监控此工作,测试团队应当识别其测试数据需求,并与相关涉众合作,以便在服务开发进程中获取数据。SOA治理流程应当确保QA团队的需求得到满足。这些实践确保了当整合测试所需服务就绪时,QA团队将充分获得必要数据。
更高层次的整合需要更好的规划和战略,以解决可用性问题
在更传统的方法中,测试员可期待应用程序或业务功能通过单个项目、在通过Web界面向大众开放的单一应用程序服务器上得到交付。借助 SOA,应用程序逻辑可位于中间层,利用任意数量的技术而运作,驻留在部门甚至公司之外。这使得端到端测试即使在测试环境中都依赖于第三方。如果某重要的特定第三方系统不可用,如果QA团队没有做好准备,那么就可能干扰QA周期。QA团队必须准备好应对所有状况。
图 1. 依赖于第三方的业务流程流
对于执行测试周期而遭遇这种干扰的QA团队而言,所有涉众都前瞻性地通知其停机时间,并为之作出计划,这十分关键。如SOAPUI和Rational Application Developer(RAD)等工具可用于创建mock占位符服务来帮助适应特定服务的停机时间和不可用性。
Mock服务允许QA团队在降低对涉众的依赖性的同时运行端到端测试。QA团队能创建与实际服务作用相似的占位符服务。这些服务是使用实际WSDL和受支持的原始服务模式而生成的。Mock 服务拥有一组响应。这些响应用于响应对Mock服务的请求。响应可以是随机的、循环的或基于特定规则/策略的。
图 2.业务流程流对第三方的依赖 ——Mock服务
如果原始服务出于任意原因而不可用,就可使用Mock服务。这有助于确保QA周期不受特定服务故障的负面影响。一旦定义了服务界面,测试员就能继续创建服务,以获取端到端解决方案,而不需等待实际服务得到开发。
Mock服务还有助于隔离缺陷,同时调试问题、研究问题根源。由于Mock服务受到良好控制,它们有助于创建更加可控的环境,特别是在诊断缺陷之时。以这种方式,测试员就能推动不同的端到端方案,而且较少受到第三方位置的可能问题的影响。我们推荐为项目中每个Web服务都生成一个Mock服务。
安全挑战
由于SOA环境的特质是利用了独立服务,所以维护安全性就更具挑战性。安全解决方案必须应对安全性的所有典型方面 —— 即验证、授权、准确识别、消息完整性、认可、机密性/私密性和审计支持。这要求仔细地确立可靠的关系,特别要使用WS-Security标准。为了能够测试安全措施,关键是要了解所使用的标准、协议和约定,并具备相关技能。
同样,Web服务是基于Web的,因而需要像关注任意Web解决方案一样关注它。仍然可应用例如Rational AppScan[5]等工具来测试其漏洞。
针对安全漏洞,必须采用常规的负面测试用例。列表将包含测试,以确保:
拒绝重放,即不应该接受稍后重新发送的复制消息
不可能发生中间人攻击
消息是机密的,不能未预先通知就进行改变
只有合法用户能访问服务(包括拒绝欺诈阴谋)
必须确保出色的异常管理
当不同服务通过一个公共层相互作用时,必须测试异常状况,并确保代码使用了基于规范的标准,以处理边缘/负面流程条件。业务流程流帮助模拟影响底层服务的业务事件的进展。如果任一个服务不响应或在某种意义上响应失败,则流程应当足够健壮以处理这种状况,并提供故障通知。在测试流程时,这些边缘条件必须得到识别和测试。
重用挑战
重用是SOA的主要益处之一。在开始采用SOA之时,单个服务会被数个或少数应用程序所使用;但很快,一些服务将被许多应用程序使用。如果这些服务没有计划在如此负载下运行,没有经过相关测试,那么一些使用它们的应用程序可能要遭受不可接受的响应时间。而且在最坏的情况下,服务没有经过彻底测试而且不能工作,那么对于整个组织而言,这种故障的影响可能是灾难性的,因为同时会有多个应用程序受到影响。
学习曲线
一些技术和标准(例如SOAP、Web 服务、XML、BPEL和WS-Policy)不断发展。采用这些技术的过程会很缓慢,因而当企业执行现代化任务时,需要考虑相关学习曲线。QA团队成员需要深刻理解这些技术与好处,这些技术和好处使他们能够有效地测试SOA解决方案。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
API设计:如何正确开发应用程序接口
在交互组件化软件的世界里,没有比让组件之间以及组件与移动设备和浏览器之间进行连接的应用程序接口(API)更重要的东西了。
-
如何在SOA中执行BPEL测试?
几乎所有面向服务架构(SOA)用户都在使用业务流程执行语言(BPEL)。作为编排粗粒度的业务流程流工具,BPEL实际上是行业的标准,但是还是会引起测试问题。
-
REST vs. SOAP:如何挑选最好的Web服务
在应用没有任何服务器端的组件情况下,有没有可能直接通过我的应用数据库直接使用这些Web服务?
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。