随着 SOA 技术的不断发展 , 为保证 SOA 服务的质量 ,SOA 测试也越来越重要。Human Task 作为一个需要人工干预的服务在 SOA 中被广泛使用。本文针对调用 Human Task 的 SOA 服务为 SOA 测试工程师提供了测试准备,环境部署,测试执行等一整套的测试工作。
引言
随着 SOA 的普及,越来越多的应用程序使用 SOA 技术构建。“服务”是 SOA 的关键,一般来说,服务提供者为程序,但在某些领域(如业务流程管理)中却存在着一些例外,很多活动需要参与人员借助自身的专业知识和经验,才能做出判断,这类活动包括异常情况的人工处理、各种请求的审批等。IBM WID/WPS 中的 Human Task 技术,提供了一种将人工活动封装为 SOA 服务的途径,它使用和普通服务一样的接口描述语言来定义服务接口,使得人工活动作为一种特殊的服务平滑的集成到 SOA 架构中。
鉴于 Human Task 的特殊性和复杂性(特别是涉及到用户、角色和权限等安全概念),使用了 Human Task 的 SOA 服务在其开发和测试的过程中具有很多的独特之处,本文从测试的角度,详细的描述了测试此类服务的完整过程,从而保证开发的服务在功能上和性能上均能满足业务场景的复杂需求。
本文从内容上可以分为两个部分:第一部分描述测试环境的搭建,包括使用 WID 进行 Human Task 模板设计,启用 WPS 全局安全,并配置 LDAP 来管理 Human Task 用户,以及部署 Human Task 模板和待测试服务到 WPS 等;第二部分主要关注服务的测试,使用 SOA Testing Framework 对 SOA 服务进行功能测试,使用 RPT(Rational Performance Tester) Extension for SOA Quality 进行性能测试。
在 WID 中设计 Human Task 模板
每一个 Human Task 实例都需要根据预先设计好的 Human Task 模板来创建。在这里,我们使用 WID 创建模板,指定模板的类型、名字和名字空间等基本属性,同时映射用户角色到具体的用户或组。详细步骤如下:
1. 打开 WID Business Integration view,创建 Module,填入 Module 名字。
2. 创建 Human Task,选择任何一种 Human Task 类型(以 Pure Human Task 为例)。
3. 通过 Properties 来设定 Human Task 的基本属性,包括 Task 优先级,是否允许自动 Claim 等。
4. 通过 Originator Settings/Receiver Settings 来映射角色到 LDAP 用户或组,可能的角色包括 Potential Instance Creator,Administrator,Potential Owner, Editor 和 Reader,这样可以确保有权限的用户才允许做相应的操作。
图一设定用户
这里我们以 Potential Owner 为例,Potential Owner 表示哪些用户可以声明相应的任务,被声明的任务将只能由该用户(或管理员)处理。如图一所示,我们指定 taskGroup 这个组里面的所有用户都可以声明使用当前模板创建的任务。同时也可以看到,对于用户和组的管理,WID/WPS 支持 LDAP,User Registry 和 System,这里选择 LDAP 来管理用户。
Note:如果 Verb 使用 Group 选项,既映射某个角色到一个指定的组时,需要使用组的全名,如 cn=taskGroup,dc=groups,dc=cbs。
5. 将此 Human Task 拷贝到 Assembly Diagram 中,导出工程为 ear 文件。
在 WPS 服务器上部署、管理 Human Task 模板和待测试服务
在 WPS 中启用全局安全和配置 LDAP
首先登录到 WPS Admin Console 中,在目录 Security-Global Security 中选择 Enable Global Security,使用 LTPA 验证机制,同时选用 LDAP 来管理用户,具体的 LDAP 配置如图二所示。
图二配置 LDAP
部署 Human Task 模板到 WPS 应用服务器
1. 选择安装一个新工程,选择模板 Ear 文件;
2. 启动应用;
3. 通过 BPC 来验证模板是否部署成功,http://server:port/bpc。
Note: 如果模板用户中使用了 Group 属性,在 Server->ApplicationServer->HumanTaskContainer 中选中 Enable group work items, 这样模板才能成功部署。
从 WPS 应用服务器中卸载 Human Task 模板
1. 删除 BPC 中所有该模板的实例;
2. 在目录 Application -> Enterprise Applications -> template application -> EJB Modules-SampleEJB.jar-Human tasks, 选择要卸载的模板,stop 模板;
3. 卸载模板应用。
部署待测试的服务
部署待测试服务(其调用了 Human Task)的步骤同部署 Human Task 模板的 1,2 步类似,如果该服务有额外的包依赖,则需要为其配置共享 Library。
使用 STF(SOA Test Framework)对 SOA 服务进行功能测试
STF 是为解决 SOA 服务测试而出现的 SOA 服务功能测试工具。通过部署 WSDL 文件,可以调用相应的 Operation,设置验证点,运行 Test Suite,查看测试报告等一系列操作。
使用 STF 来进行 SOA 服务功能测试包括以下几个方面:
1. 创建测试工程
2. 创建测试 Suite
3. 设置用户:在 STF-Configuration-SCA Role 中添加需要的用户,在调用 Operation 上使用相应的用户,这是在 Human Task 的测试中最关键的。如图三所示,只有设置在模板的 Potential Owner 才可以调用 Claim 操作,这里 charlie 是 Potential Owner。
图三用户调用
4. 在 Test Suite 中创建 test case
Invoke a webService Call: 调用要测试的 Operation,输入相应的参数,设定 Operation 的 Output,可以是一个 ID 或者 BO
添加 CheckPoint:添加 JavaScipt 来验证输出是否等同预期结果
执行 test case,查看测试结果
图四 STF
执行 Test Suite, 查看测试报告
使用 RPT Extension for SOA Quality 对 SOA 服务进行性能测试
该章将详细介绍如何使用 RPT Extension for SOA Quality 对 SOA 服务进行性能测试,包括安装工具,编写测试用例,运行性能调度,分析测试报告。
安装性能测试工具 RPT Extension for SOA Quality
1. 安装 RPT 7.0,同时打开 Install Manager 导入 Jar 文件来激活 RPT 7.0 的 License
2. 更新 Install Manager 的文件包
3. 更新 RPT 7.0 为 RPT 7.0.0.2
4. 基于 RPT 7.0.0.2,安装 RPT Extension for SOA Quality,如步骤 1 来激活 RPT Extension for SOA Quality 的 License
编写 Test Case
1. 创建性能测试工程,选择如下图所示的 Web service Recording
图五创建性能测试工程
2. 创建测试 Suite
在创建的工程中新建一个测试 suite,导入要测试的 WSDL 文件,选择该 WSDL。
图六导入 WSDL 文件到性能测试工程中
3. 点击 Next,将看到该 WSDL 文件的所有 Operation。这时停止记录,生成测试 Suite。
图七 WSDL 中包含的所有 Operation
4. 在测试 Suite 中调用 WebService Call
图八调用 Web Service Call
5. 选择要测试的 Operation,同时填写必要的信息
图九选择相应的 Operation
图十添加 Input 为 createTask
6. 设置 Human Task 的用户信息
如图示在当前的 Service 使用了基本认证方式,我们设置当前操作 createTask 的用户是 testuser。
图十一设置用户信息
7. 建立域引用和使用域引用
测试过程中,很多 Operation 的输入要依赖上一个 Operation 的输出,而域引用可以解决这方面的问题。
图十二建立域引用
图十三使用域引用
运行测试调度
测试用例建立完毕之后,需要进行测试调度的设计,包括并发用户,Think Time,Delay Time, Loop 次数的指定。
1. 建立测试调度
图十四建立测试调度
2. 运行测试调度,Run As Performance Schedule,查看测试报告
图十五测试报告 -Summary
图十六测试报告 – 响应时间结果图
分析测试报告
测试调度运行结束后,我们会看到测试报告和测试日志。测试报告包括 Web Service 调用成功率,平均响应时间,各个 Operation 的平均响应时间等。同时我们可以根据并发用户和平均响应时间来计算相应 Service 的吞吐量,以此查看吞吐量是否符合 NFR 的性能指标。测试日志则显示了测试用例执行过程中真实的数据流和信息流。
总结
SOA 测试目前处于探索阶段,Human Task 作为 WPS 重要的组成部分也必将更多的在 SOA 开发中使用。本文对于 SOA 测试的讲述,希望可以给 SOA 测试人员带来帮助。
作者简介
王海艳毕业于吉林大学,是 IBM GBSC Team 的一员,工作职位为 SOA软件测试工程师,一直专注于SOA测试工作。
杨乐是IBM中国软件开发中心 GBSC 的软件工程师,其所在团队从事 SOA 行业方案的设计和开发,他的专长和兴趣包括 J2EE、Web 服务、XML 和 Security 等。您可以通过 yangle@cn.ibm.com和他联系。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
联合创新,携手共赢 华为与Commvault签署全球合作联盟协议
【中国,上海,2015年9月19日】在2015年华为云计算大会上,全球领先的信息与通信解决方案供应商华为与美国知名的数据管理软件及相关服务主要供应商Commvault签署全球合作联盟协议。基于合作协议,双方将会加大投入数据中心备份解决方案在云化环境下的“可服务化”技术研究 。Commvault公司全球业务发展副总裁Andreas May、华为IT数据中心解决方案总裁马力出席签约仪式。