Web 服务测试教程:如何测试?通过示例学习

什么是 WebService?

Web 服务是一种通信机制或媒介,通过它,两个应用程序/机器可以交换数据,无论其底层架构和技术如何。

什么是 Web 服务测试?

Web 服务测试是一种软件测试,用于验证 Web 服务。Web 服务测试的目的是检查 API(应用程序编程接口)的功能、可靠性、性能和安全性。Web 服务测试在某些情况下类似于单元测试。您可以手动测试 Web 服务,也可以创建自己的自动化代码,或者使用现成的自动化工具,如 Postman。

为什么需要 WebService?

通常,软件应用程序是为了供人类使用而开发的,其中一个人向软件服务发送请求,该服务反过来以人类可读的格式返回响应。

在现代技术时代,如果您想构建一个软件应用程序,您无需从头开始构建所有内容。有许多现成的服务可供您插入到应用程序中,然后您就可以在应用程序中提供这些服务。

例如,您想显示天气预报信息,您无需在应用程序中收集、处理和呈现数据。您可以从那些在处理和发布此类数据方面已然成熟的人那里购买服务。

Web 服务允许我们进行此类实现。

例如,考虑以下 WebService

http://www.webservicex.net/stockquote.asmx?op=GetQuote

它提供一家公司的股票价值。

让我们查找谷歌的股票价格(股票代码:GOOG)

Web Service Testing

响应 XML 提供股票价格。

Web Service Testing

此 WebService 可以通过使用 SOAP 或 HTTP 协议的软件应用程序调用。

Web 服务协议

Web 服务可以通过不同的方式实现,但以下两种是流行的实现方法。

  1. SOAP(简单对象访问协议)
  2. REST(表述性状态转移架构)

SOAP

SOAP 是由 W3C 标准定义的用于发送和接收 Web 服务请求和响应的标准协议。

SOAP 使用 XML 格式发送和接收请求,因此数据是平台无关的数据。SOAP 消息在提供方应用程序和接收方应用程序之间通过 SOAP 信封进行交换。

由于 SOAP 使用简单的 HTTP 传输协议,其消息不会被防火墙阻止。

REST

REST 代表表述性状态转移;它是一种通常运行在 HTTP 之上的架构。REST 风格强调客户端和服务之间的交互,通过有限的操作数量来增强这种交互。REST 是 SOAP(简单对象访问协议)的替代方案,它不像 SOAP 那样使用 XML 进行请求,而是在某些情况下使用简单的 URL。与 SOAP 不同,RESTful 应用程序使用 HTTP 内置的头部来携带元信息。

REST 使用各种代码来确定用户是否可以访问 API,例如代码 200 或 201 表示与响应正文的成功交互,而 400 表示错误的请求或请求 URI 不匹配系统中的 API。所有 API 请求参数和方法参数都可以通过 POSTGET 变量发送。

Rest API 支持 XML 和 JSON 格式的 WebService API 测试。它通常适用于移动和网络应用程序,因为它能使应用程序运行更快、更流畅。

WSDL

WSDL (Web Services Description Language) 是一种基于 XML 的语言,用于描述 Web 服务提供的服务。

WSDL 以 XML 格式描述了特定 Web 服务提供的所有操作。它还定义了如何调用服务,即我们需要提供什么输入值以及它将为每种服务生成的响应格式是什么。

如何测试 Web 服务?

要测试 Web 服务,您可以

  1. 手动测试
  2. 创建自己的自动化代码
  3. 使用现成的自动化工具,如 SoapUI。

Web 服务自动化测试包括以下步骤:

  1. 理解 WSDL 文件
  2. 确定特定 Web 服务提供的操作
  3. 确定我们需要发送的 XML 请求格式
  4. 确定响应 XML 格式
  5. 使用工具或编写代码发送请求并验证响应

假设我们要测试提供货币兑换功能的 Web 服务。它将提供不同国家货币之间的当前兑换率。我们可以在应用程序中使用此服务将值从一种货币转换为另一种货币。

现在让我们看看以上步骤

步骤 1 至 4:了解 WSDL 并确定操作和 XML 格式

货币转换器 WSDL 文件可以在 (http://www.webservicex.net/CurrencyConvertor.asmx?wsdl) 查看,它将提供有关货币转换器 Web 服务方法的信息,包括它支持的方法、我们需要传递的参数以及参数类型等。

WSDL and determining operations & XML formats

WSDL and determining operations & XML formats

步骤 5:使用工具或编写代码发送请求并验证响应

有许多可用于测试 SOAP web 服务的 WebService 测试工具。SoapUI 是一种流行的 API 工具,它将帮助我们测试 SOAP web 服务。事实上,您可以使用任何能够通过 http 向 web 服务提供程序应用程序发送 XML 请求并能够解析和验证响应 XML 与预期结果的编程语言。在本 Web 服务测试教程中,我们将测试 Web 服务

  1. 使用 Java
  2. 使用 SoapUI

第一部分)使用 Apache Axis2 API(Java)进行 WebService 测试。

通常,Web 服务以 XML 格式接收请求并发送响应。

Apache Axis2 API 项目是一个Java 实现 API,用于为服务器端(服务提供者)和客户端(服务消费者)创建 Web 服务。

Axis2 能够发送 SOAP 消息并接收和处理 SOAP 消息。我们可以使用 API 编写一个小的 Java 程序来创建 Web 服务。Axis2 将从 Java 程序生成 WSDL,WSDL 将用于传达 Web 服务提供的服务。我们可以使用相同的 Axis2 从 WSDL 文件生成 Java 类(存根),我们可以将其用作客户端程序来生成 Web 服务请求,将请求发送到服务终点并处理响应。

  1. 基本上,我们将创建一个简单的 Java 程序,在其中实例化存根类。
  2. 使用存根,我们将通过传递所有必需的信息来调用请求方法。
  3. 存根程序将把该请求转换为 XML 请求格式并将其发送到服务终点,服务终点将读取请求并处理请求并以 XML 格式发送响应。
  4. XML 响应将由存根转换为 Java 类并返回给实际程序。

让我们详细看看上述步骤

步骤 a) 从 https://axis.apache.org/axis2/Java/core/download.cgi 下载 axis2 API 并设置环境变量“AXIS2_HOME”

WebService Testing Using Apache Axis2 API (Java)

步骤 b) 创建一个文件夹以保存所有生成的工件

例如:C:\Axis\Projects\CurrencyConverter

步骤 c) 打开命令提示符并导航到您要生成工件的文件夹结构,然后运行以下命令,该命令将生成存根

%AXIS2_HOME%\bin\WSDL2Java -uri http://www.webservicex.net/CurrencyConvertor.asmx?wsdl -p org.apache.axis2.currencyconvertor -d adb –s

WebService Testing Using Apache Axis2 API (Java)

步骤 d) 命令成功运行后,您将看到包含所需文件的文件夹。

WebService Testing Using Apache Axis2 API (Java)

步骤 e) 在本 Web 服务测试教程的下一步中,我们必须创建客户端程序,通过该程序我们将使用生成的存根发送实际请求。打开 Eclipse 并创建新的 Java 项目,然后选择我们上面创建的文件夹。

WebService Testing Using Apache Axis2 API (Java)

步骤 f) 将所有 axis2 相关的 jar 添加到项目构建路径中,这些 jar 将位于 axis2 软件文件夹的 lib 文件夹中。

(例如:C:\Axis\axis2-1.6.2\lib)

WebService Testing Using Apache Axis2 API (Java)

步骤 g) 创建一个新的 Java 类(例如:Client.Java)并实例化存根对象。使用存根对象,我们可以调用特定 WebService 的所有支持方法。

WebService Testing Using Apache Axis2 API (Java)

Client.Java Program
package org.apache.axis2.currencyconvertor;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRate;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRateResponse;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.Currency;

public class Client {
 public static void main(Java.lang.String args[]) {

  try {

       //Create the stub object by passing the service end point url
       CurrencyConvertorStub stub = new CurrencyConvertorStub("http://www.webservicex.net/CurrencyConvertor.asmx");
       //ConversionRate is the class which we have to use mention the from and to currency
       //ConversionRate object will be the parameter for the conversionRate operation
       ConversionRate conversionRate = new ConversionRate();
       conversionRate.setFromCurrency(Currency.USD);
       conversionRate.setToCurrency(Currency.INR);

       //Create the ConversionRateResponse object, which is going to be used to catch the response
       //call the conversionRate service using the stub object
       ConversionRateResponse conversionRateResponse = stub.conversionRate(conversionRate);

       //We can use the conversionRateResponse object to retrieve the response of the ConversionRate Service
       System.out.println("Conversion Rate from INR to USD : " + conversionRateResponse.getConversionRateResult());

       } catch (Exception e) {
       e.printStackTrace();
      }
    }
}

第 2 部分)如何使用 SoapUI Web 服务进行测试

在 SoapUI 中

  1. 转到 文件 > 新建 Soap 项目
  2. 输入项目名称和 WSDL URI 位置
  3. 点击确定

Test Using SoapUI Web Service

  1. 展开第一个请求,然后双击“请求1”。它将以 XML 格式显示 SOAP 请求。
  2. 输入“From Currency”(起始货币)和“To Currency”(目标货币)
  3. 点击提交按钮
  4. 响应 XML 将显示在右侧窗格中。

Test Using SoapUI Web Service

正如您可能得出的结论,使用 SoapUI 等 WebService 测试工具可加快您的 Web 服务自动化测试工作。因此,在后续教程中,SoapUI 将成为我们学习的重点。

摘要

  • 软件应用程序使用 WebService 相互通信和交换数据
  • SOAP 和 REST 是创建 WebService 的两种流行协议
  • SOAP 支持基于 XML 的数据交换
  • REST 支持 XML、Json 或简单 URL 中的数据交换,用于 WebServices API 测试。
  • WSDL 是一种基于 XML 的语言,用于描述 Web 服务提供的服务。SOAP 是使用 WSDL 定义的。
  • 要测试 WebService,您可以
    • 创建自己的代码。例如,使用 Java 的 Axis2 API。
    • 使用 SoapUI 等 WebService 自动化测试工具
  • 像 SoapUI 这样的自动化工具将加速您的 Web 服务自动化测试工作,与使用 Axis2 API 创建自己的代码相比,它需要更少的编码工作。

常见问题

网络服务 Web API
由 W3C 定义,所有通信和数据交换均基于 XML Web API 通信和数据交换可以是 XML、JSON 或纯数据
它有定义的标准——WSDL 没有明确的标准
您不能压缩数据,但可以压缩 HTML 请求 您可以压缩数据
示例:SOAP 示例:REST

了解更多关于Web API 测试的信息

本 Web 服务测试教程由 Narender Reddy Nukala 先生贡献。