SOA测试示例与教程

什么是SOA测试?

SOA(面向服务的体系结构)测试是对SOA体系结构风格的测试,其中应用程序组件被设计为通过网络的通信协议进行通信。

在本教程中,将了解-

  • 什么是SOA?
  • 什么是服务?
  • SOA测试
  • SOA测试的策略
  • SOA测试方法
  • SOA测试中的挑战
  • SOA测试工具
  • SOA测试用例

什么是SOA?

SOA是一种将业务应用程序和流程集成在一起以满足业务需求的方法。

在软件工程领域,SOA为业务流程提供了高速移动和灵活性。对流程或应用程序的更改可以定向到特定组件,而不会影响整个系统。

SOA中的软件开发人员要么开发,要么购买服务的程序块。

什么是服务?

Learn SOA Testing
Learn SOA Testing
  • 服务可以是应用程序或业务流程的功能单元,可以由任何其他应用程序或流程重用或重复。 (例如,在上图中,支付是一项可以被电商网站重用的服务。完成支付后,向电子商务网站发送响应)

  • 服务很容易组装,也很容易重新配置组件。
  • 可以将服务比作构建块。在应用程序或业务流程中添加和删除很容易。
  • 服务更多地是由执行的业务功能定义的,而不是作为代码块定义的。

Web服务

Web服务是独立的应用程序组件,可通过Web使用。可以在网上发布、查找和使用。可以通过互联网进行交流。

Learn SOA Testing
Learn SOA Testing
Learn SOA Testing
Learn SOA Testing
  1. 服务提供商将服务发布到互联网。
  2. 客户端从Web服务注册表中搜索特定的Web服务
  3. 返回所需Web服务的URL和WSDL。 通过WSDL和URL,服务提供者和求者之间通过SOAP消息进行通信。

  4. 当使用者调用Web服务时,将建立到提供者的HTTP连接。 创建SOAP消息以指示提供者调用所需的Web服务逻辑。

  5. 从提供者接收的响应是一条SOAP消息,将嵌入到HTTP响应中。此HTTP响应是消费者应用程序可以理解的数据格式。

示例

网站的主页和搜索引擎显示每天的天气报告。可以从供应商那里购买天气报告服务,并将其集成到页面中,而不是对天气报告部分进行全面编码。

Learn SOA Testing
Learn SOA Testing

SOA测试

SOA由各种技术组成。使用SOA构建的应用程序具有松散耦合的各种服务。

Learn SOA Testing
Learn SOA Testing

SOA测试应关注3个系统层

服务层

这一层由服务组成,由派生自业务功能的系统公开的服务。

例如- 一个Wellness网站,由以下内容组成

  1. 体重跟踪器
  2. 血糖跟踪仪
  3. 血压跟踪器

跟踪器显示各自输入的数据和日期。服务层由从数据库获取相应数据的服务组成-

  • 体重跟踪器服务
  • 血糖跟踪器服务
  • 血压跟踪器服务
  • 登录服务

流程层

流程层由流程、服务集合组成,这些服务是单个功能的一部分。 这些进程可能是用户界面(用于EX-A搜索引擎)的一部分,也可能是ETL工具(用于从数据库获取数据)的一部分。

这一层的主要焦点将放在用户界面和流程上。

重量跟踪器的用户界面及其与数据库的集成是主要关注点。

考虑以下功能

  1. 添加新数据
  2. 编辑现有数据
  3. 创建新跟踪器
  4. 删除数据

消费者层

这一层主要由用户界面组成。

Learn SOA Testing
Learn SOA Testing

基于该层,SOA应用程序的测试分为三个级别。

  1. 服务级别
  2. 接口级
  3. 端到端
  • 测试设计采用自顶向下的方法。
  • 测试执行采用自下而上的方法。

SOA测试的策略

测试计划方法,

  • SOA测试人员应该了解应用程序的完整体系结构。
  • 需要将应用程序分解为独立的服务(服务,请求和响应结构,不依赖于任何其他服务来形成响应)。
  • 应用程序结构需要重新组织为三个组件-数据、服务和前端应用程序。
  • 所有组件都需要仔细分析,并用勾画出业务场景。
  • 业务场景应分为通用场景和应用特定场景。
  • 应该准备一个可追溯性矩阵,并且所有的测试用例都应该追溯到业务场景。

测试执行方法

  • 应该测试每个服务组件。
  • 应该对服务组件进行集成测试,以验证通过服务的数据流和数据完整性。
  • 应该对整个模型进行系统测试,以验证前端应用程序和数据库之间的数据流。
  • 应该进行性能测试,以实现微调和最佳性能。

SOA测试方法

  1. 业务场景驱动的基于数据的测试,
  • 应该分析与系统相关的各种业务方面。
  • 场景的开发应基于
  • 应用程序的各种Web服务
  • Web服务和应用程序。
  • 应根据上述场景设置数据。
  • 数据设置也应涵盖端到端场景。
  1. 存根
  • 将创建虚拟接口来测试服务。
  • 通过这些接口可以提供各种输入,并且可以验证输出。
  • 当应用程序使用到外部服务(不在测试中的第三方服务)的接口时,可以在集成测试期间创建存根。
  1. 回归测试
  • 当存在多个版本时,应对应用程序进行回归测试,以确保系统的稳定性和可用性。
  • 将创建一个全面的回归测试套件,涵盖构成应用程序重要部分的服务。
  • 此测试套件可以在项目的多个版本中重用。
  1. 服务级别测试

服务级别测试包括测试组件的功能性、安全性、性能和互操作性。

每项服务都需要首先进行独立测试。

  1. 功能测试

应该对每个服务进行功能测试,以

  • 确保服务为每个求提供正确的响应。
  • 对于具有无效数据、坏数据等的求,接收正确的错误。
  • 检查服务在运行时必须执行的每个操作的每个求和响应。
  • 在服务器、客户端或网络级别发生错误时验证故障消息。
  • 验证收到的回复格式是否正确。
  • 验证响应上接收的数据是否与求的数据相对应。
  1. 安全测试

Web服务的安全性测试是SOA应用程序服务级别测试过程中的一个重要方面,保证了应用程序的安全性。

测试过程中需要考虑以下因素:

  • Web服务应该遵守WS-Security测试定义的行业标准。
  • 安全措施应该全面。
  • 对文档上的数据和数字签名进行加密
  • 身份验证和授权
  • SQL注入、恶意软件、XSS、CSRF等漏洞都将在XML上进行测试。
  • 拒绝服务攻击
  1. 性能测试

需要对服务进行性能测试,因为服务是可重用的,并且多个应用程序可能正在使用相同的服务。

测试过程中会考虑以下因素:

  • 服务的性能和功能需要在重负载下进行测试。
  • 服务的性能需要在单独工作时进行比较,也需要在应用程序内进行比较。
  • 应执行服务的负载测试
  • 要验证响应时间,执行以下操作
  • 要检查瓶颈,执行以下操作
  • 验证CPU和内存的利用率
  • 要预测可扩展性,执行以下操作
  1. 集成测试
  • 服务级别测试只确保单个服务的正常工作,不能保证耦合组件的工作。
  • 集成测试主要集中在接口上。
  • 此阶段涵盖所有可能的业务场景。
  • 在此阶段,应用程序的非功能测试应该再做一次。安全性、合规性和性能测试从各个方面保证了系统的可用性和稳定性。
  • 应该对通信和网络协议进行测试,以验证服务之间数据通信的一致性。
  1. 端到端测试

此阶段确保应用程序在功能和非功能上都符合业务需求。 保证在端到端测试过程中测试以下项目

  • 集成后所有服务均按预期工作
  • 异常处理
  • 应用程序的用户界面
  • 正确的数据流通过所有组件
  • 业务流程

SOA测试中的挑战

  • 缺少服务接口
  • 测试流程跨越多个系统,因此产生了复杂的数据需求
  • 应用程序是倾向于更改的各种组件的集合。回归测试的需求更加频繁。
  • 由于多层体系结构,很难隔离缺陷。
  • 由于服务将在不同的接口中使用,因此很难预测负载,从而使性能测试计划变得繁琐。
  • SOA是异构技术的集合。测试SOA应用程序需要具有不同技能集的人员,这反过来又增加了规划和执行成本。
  • 由于应用程序是多个服务的集成,因此安全测试也有其自身的问题。验证身份验证和授权相当困难。

SOA测试工具

市场上有许多SOA测试工具可以帮助测试人员测试SOA应用程序。以下是一些流行的SOA测试工具:

1) SOAP UI

“SOAPUI”是一个用于服务和API测试的开源功能测试工具。

  • 桌面应用程序
  • 支持多种协议-SOAP、REST、HTTP、JMS、AMF、JDBC
  • 可以开发、检查和调用Web服务。
  • 还可以用于负载测试、自动化测试和安全测试
  • 存根可以由MockServices创建
  • Web服务求和测试可以通过其Web服务客户端自动生成。
  • 有内置的报告工具
  • 由SmartBear开发

2) iTKO Lisa

“LISA”是为SOA等分布式系统提供功能测试解决方案的产品套件。

  • 还可以用于回归、集成、负载和性能测试。
  • 由iTKO(CA Technologies)开发
  • 可用于设计和执行测试。
  1. HP服务测试

服务测试是一种功能测试工具,既支持UI测试,也支持共享服务测试

  • 服务的功能和性能测试都可以由单个脚本完成。
  • 与HP QC集成。
  • 海量的服务和数据是可以管理的。
  • 通过模拟JEE、AXIS和DotNet客户端环境支持互操作性测试。
  • 由惠普开发。

4) Parasoft SOA Test

SOA Test是为API和API应用程序测试开发的测试和分析工具套件。

  • 支持Web Services、REST、JSON、MQ、JMS、TIBCO、Http、XML等技术。
  • 可以进行功能测试、单元测试、集成测试、回归测试、安全性测试、互操作性测试、符合性测试和性能测试。
  • 可以使用Parasoft Virtualize创建存根,它比SOAP UI更智能。
  • 由Parasoft开发

SOA测试用例

考虑一个电子商务网站,它包含以下功能和子功能:

订单处理

Learn SOA Testing
Learn SOA Testing

第一阶段

在SOA测试的第一阶段,即测试策略阶段,应用程序被分解为服务和业务功能。

下面让我们考虑一下应用程序中的服务。

  • 创建订单
  • 检查客户状态
  • 变更单状态
  • 检查订单状态
  • 检查库存

业务功能与网站功能相同。

注意:测试策略文档将包含必须测试的服务和功能的列表。

第二阶段

测试计划阶段。测试用例是为每个级别编写的。

  1. 端到端级别。测试用例是为每个业务用例和流程编写的。

下面是测试用例的示例

* 使用活动用户创建订单。 
* 使用非活动用户创建订单。 
* 使用订单量<可用数量的可用产品创建订单。 
* 使用订货量>可用量的可用产品创建订单。 
* 创建包含多个项目的订单 
* 完全取消订单。 
* 部分取消订单。 
  1. 集成级别。编写测试用例,实现数据库与用户界面的集成。

下面是示例测试用例。

* 使用单个项目创建新订单。验证是否在数据库上创建了订单。 
* 使用单个项目创建新订单。验证为订单计算的价格是否正确。 
* 使用单个项目创建新订单。验证可用产品的数量是否比订单金额少。 
* 验证UI上显示的订单状态与数据库上显示的订单状态是否相同。 
* 取消订单并验证订单状态在数据库中是否已修改。 
* 对于第一次付款,验证在UI上输入的付款详细信息是否保存在数据库中。 
* 对于退款,验证UI上是否显示了数据库上的付款详细信息。 
  1. 服务级别。针对所有数据条件测试每个服务。

下面是几个例子。

编号 订单详细信息 订购条件
1 创造秩序,订购数=1 订单数量<数据库数量
2 创造秩序,订购数>1 订单数量<数据库数量。
3 创建订单编号订购数=1 订单数量>数据库数量
4 检查订单状态 数据库上的状态=活动
5 检查订单状态 数据库上的状态=已发运
6 检查订单状态 数据库上的状态=已取消
7 检查订单状态 订单ID=无效
8 检查产品供应情况 产品数量>0
9 检查产品供应情况 产品数量=0
10 检查产品供应情况 产品ID=无效

阶段3-测试执行

测试执行使用自下而上的方法,即首先进行服务级别测试,然后进行集成级测试,最后进行端到端测试。

1) 服务级别

考虑使用Soapui工具来测试应用程序。 WSDL和URL被浏览到SOAP的测试窗口中。 每项服务的求将显示在求窗口上。 通过根据服务级别测试用例修改数据,可以为每个测试用例创建求。

测试用例 请求 预期响应
创造秩序。项目数=1订单数量<数据库数量 x2 2 o3251 Successful
创建订单。编号。项目数>1订单数量<数据库数量 y1 1 y2 3 o3251 Successful
创建订单号。项目数=1订单数量>数据库数量 x23 200 null Unsuccessful
检查订单状态数据库上的状态=活动 o9876 Active Successful
检查订单状态数据库上的状态=已发运 o9656 Shipped Successful
检查订单状态订单ID=无效 y5686 null Unsuccessful
检查产品可用性>0的产品数量 D34 34 yes Successful
检查产品可用性产品数量=0 Y34 0 no Successful
检查产品可用性产品ID=无效 sder 不成功
2) 集成级别

集成级测试用例在用户界面和数据库上执行。

  • 使用单个项目创建订单-
  • 用户打开该网站。
  • 下订单。
  • 选择有效的产品和数量并保存订单。
  • 显示一条消息,说明订单已成功下达。
  • 用户打开数据库,检查订单的详细信息是否与网站上输入的相同。
3) 端到端级别

业务流和用例在用户界面上执行。

  • 创建包含多个项目的订单-
  • 用户打开网站。
  • 下订单。
  • 查询有效产品和数量会将其添加到购物车中。
  • 以有效数量添加其他有效产品,并保存订单。付款是通过一种新的付款方式完成的,并下了订单。
  • 应该会显示一条消息,提示“订单已成功下达”。
  • 测试人员应该验证整个流程是在没有异常数据的情况下完成的。

结论:

通过勾勒出正确的测试策略、资源、工具和遵从性来提供良好的服务,SOA测试可以交付经过全面和完美测试的应用程序。

IT赶路人

专注IT知识分享