mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-04-02 02:50:11 +08:00
校对完毕
校对完毕
This commit is contained in:
parent
c1a18abe01
commit
c29172f825
@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
> Flashback 用于模拟 HTTP 和 HTTPS 资源,如 Web 服务和 REST API,用于测试目的。
|
> Flashback 用于模拟 HTTP 和 HTTPS 资源,如 Web 服务和 REST API,用于测试目的。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
>图片提供: Opensource.com
|
>图片提供: Opensource.com
|
||||||
|
|
||||||
在 LinkedIn,我们经常开发需要与第三方网站交互的 Web 应用程序。我们还采用自动测试,以确保我们的软件在发布到生产环境之前的质量。然而,测试只是在可靠时才有用。
|
在 LinkedIn,我们经常开发需要与第三方网站交互的 Web 应用程序。我们还采用自动测试,以确保我们的软件在发布到生产环境之前的质量。然而,测试只是在可靠时才有用。
|
||||||
@ -23,7 +24,7 @@
|
|||||||
|
|
||||||
### 什么是 Flashback?
|
### 什么是 Flashback?
|
||||||
|
|
||||||
Flashback 用于模拟 HTTP 和 HTTPS 资源,如 Web 服务和 [REST][5] API,用于测试目的。它记录 HTTP/HTTPS 请求并重放以前记录的 HTTP 事务 - 我们称之为“场景”,这样就不需要连接到 Internet 才能完成测试。
|
Flashback 用于模拟 HTTP 和 HTTPS 资源,如 Web 服务和 [REST][5] API,用于测试目的。它记录 HTTP/HTTPS 请求并重放以前记录的 HTTP 事务 - 我们称之为“<ruby>场景<rt>scene</rt></ruby>”,这样就不需要连接到 Internet 才能完成测试。
|
||||||
|
|
||||||
Flashback 也可以根据请求的部分匹配重放场景。它使用的是“匹配规则”。匹配规则将传入请求与先前记录的请求相关联,然后将其用于生成响应。例如,以下代码片段实现了一个基本匹配规则,其中测试方法“匹配”[此 URL][6]的传入请求。
|
Flashback 也可以根据请求的部分匹配重放场景。它使用的是“匹配规则”。匹配规则将传入请求与先前记录的请求相关联,然后将其用于生成响应。例如,以下代码片段实现了一个基本匹配规则,其中测试方法“匹配”[此 URL][6]的传入请求。
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ oauth_version="1.0"
|
|||||||
|
|
||||||
这些值许多将随着每个请求而改变,因为 OAuth 要求客户端每次为 **oauth_nonce** 生成一个新值。在我们的测试中,我们需要验证 **oauth_consumer_key、oauth_signature_method** 和 **oauth_version** 的值,同时确保 **oauth_nonce**、**oauth_signature**、**oauth_timestamp** 和 **oauth_token** 存在于请求中。Flashback 使我们有能力创建我们自己的匹配规则来实现这一目标。此功能允许我们测试随时间变化的数据、签名、令牌等的请求,而客户端没有任何更改。
|
这些值许多将随着每个请求而改变,因为 OAuth 要求客户端每次为 **oauth_nonce** 生成一个新值。在我们的测试中,我们需要验证 **oauth_consumer_key、oauth_signature_method** 和 **oauth_version** 的值,同时确保 **oauth_nonce**、**oauth_signature**、**oauth_timestamp** 和 **oauth_token** 存在于请求中。Flashback 使我们有能力创建我们自己的匹配规则来实现这一目标。此功能允许我们测试随时间变化的数据、签名、令牌等的请求,而客户端没有任何更改。
|
||||||
|
|
||||||
这种灵活的匹配和在不连接互联网的情况下运行的功能是将 Flashback 与其他模拟解决方案分开的属性。其他一些显著特点包括:
|
这种灵活的匹配和在不连接互联网的情况下运行的功能是 Flashback 与其他模拟解决方案不同的特性。其他一些显著特点包括:
|
||||||
|
|
||||||
* Flashback 是一种跨平台和跨语言解决方案,能够测试 JVM(Java虚拟机)和非 JVM(C++、Python 等)应用程序。
|
* Flashback 是一种跨平台和跨语言解决方案,能够测试 JVM(Java虚拟机)和非 JVM(C++、Python 等)应用程序。
|
||||||
* Flashback 可以随时生成 SSL/TLS 证书,以模拟 HTTPS 请求的安全通道。
|
* Flashback 可以随时生成 SSL/TLS 证书,以模拟 HTTPS 请求的安全通道。
|
||||||
@ -77,6 +78,7 @@ git clone https://github.com/linkedin/flashback.git
|
|||||||
```
|
```
|
||||||
|
|
||||||
3\. 注意上面的 Flashback 将在本地端口 5555 上启动录制模式。匹配规则需要完全匹配(匹配 HTTP 正文、标题和 URL)。场景将存储在 **/tmp/test1** 下。
|
3\. 注意上面的 Flashback 将在本地端口 5555 上启动录制模式。匹配规则需要完全匹配(匹配 HTTP 正文、标题和 URL)。场景将存储在 **/tmp/test1** 下。
|
||||||
|
|
||||||
4\. Flashback 现在可以记录了,所以用它来代理对 example.org 的请求:
|
4\. Flashback 现在可以记录了,所以用它来代理对 example.org 的请求:
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -87,13 +89,13 @@ curl http://www.example.org -x localhost:5555 -X GET
|
|||||||
|
|
||||||
6\. 要验证已记录的内容,我们可以在输出目录(**/tmp/test1**)中查看场景的内容。它应该[包含以下内容][9]。
|
6\. 要验证已记录的内容,我们可以在输出目录(**/tmp/test1**)中查看场景的内容。它应该[包含以下内容][9]。
|
||||||
|
|
||||||
这也很容易[在 Java 代码中使用 Flashback][10]。
|
[在 Java 代码中使用 Flashback][10]也很容易。
|
||||||
|
|
||||||
### 如何重放 HTTP 事务
|
### 如何重放 HTTP 事务
|
||||||
|
|
||||||
要重放先前存储的场景,请使用与录制时使用的相同的基本设置。唯一的区别是[将“场景模式”设置为上述步骤 3 中的“播放”][11]。
|
要重放先前存储的场景,请使用与录制时使用的相同的基本设置。唯一的区别是[将“场景模式”设置为上述步骤 3 中的“播放”][11]。
|
||||||
|
|
||||||
验证响应来自场景而不是外部源的一种方法是在你执行步骤 1 到 6 时临时禁用 Internet 连接。另一种方法是修改场景文件,看看响应是否与文件中的相同。
|
验证响应来自场景而不是外部源的一种方法,是在你执行步骤 1 到 6 时临时禁用 Internet 连接。另一种方法是修改场景文件,看看响应是否与文件中的相同。
|
||||||
|
|
||||||
这是[ Java 中的一个例子][12]。
|
这是[ Java 中的一个例子][12]。
|
||||||
|
|
||||||
@ -109,9 +111,9 @@ curl http://www.example.org -x localhost:5555 -X GET
|
|||||||
* **RootCertificatePassphrase**: 为 CA 证书创建的密码。
|
* **RootCertificatePassphrase**: 为 CA 证书创建的密码。
|
||||||
* **CertificateAuthority**: CA 证书的属性
|
* **CertificateAuthority**: CA 证书的属性
|
||||||
|
|
||||||
[查看 Flashback 中用于记录 HTTPS 事务的代码][14],它包括上述条款。
|
[查看 Flashback 中用于记录 HTTPS 事务的代码][14],它包括上述条目。
|
||||||
|
|
||||||
使用 Flashback 重放 HTTPS 事务使用与录制相同的过程。唯一的区别是场景模式设置为“播放”。这在[此代码][15]中演示。
|
用 Flashback 重放 HTTPS 事务的过程与录制相同。唯一的区别是场景模式设置为“播放”。这在[此代码][15]中演示。
|
||||||
|
|
||||||
### 支持动态修改
|
### 支持动态修改
|
||||||
|
|
||||||
@ -119,11 +121,11 @@ curl http://www.example.org -x localhost:5555 -X GET
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
这能够[更改匹配规则][17]动态地允许我们测试复杂的场景。例如,我们有一个情况,要求我们测试 Twitter 的公共和私有资源的 HTTP 调用。对于公共资源,HTTP 请求是不变的,所以我们可以使用 “MatchAll” 规则。然而,对于私人资源,我们需要使用 OAuth 消费者密码和 OAuth 访问令牌来签名请求。这些请求包含大量具有不可预测值的参数,因此静态 MatchAll 规则将无法正常工作。
|
能够动态[更改匹配规则][17]可以使我们测试复杂的场景。例如,我们有一个使用情况,要求我们测试 Twitter 的公共和私有资源的 HTTP 调用。对于公共资源,HTTP 请求是不变的,所以我们可以使用 “MatchAll” 规则。然而,对于私人资源,我们需要使用 OAuth 消费者密码和 OAuth 访问令牌来签名请求。这些请求包含大量具有不可预测值的参数,因此静态 MatchAll 规则将无法正常工作。
|
||||||
|
|
||||||
### 使用案例
|
### 使用案例
|
||||||
|
|
||||||
在 LinkedIn,Flashback 主要用于在集成测试中模拟不同的互联网提供商,如下图所示。第一张图展示了通过代理层与 LinkedIn 生产数据中心内的内部服务,该服务与互联网提供商(如 Google)进行交互。我们想在测试环境中测试这个内部服务。
|
在 LinkedIn,Flashback 主要用于在集成测试中模拟不同的互联网提供商,如下图所示。第一张图展示了 LinkedIn 生产数据中心内的一个内部服务,通过代理层,与互联网提供商(如 Google)进行交互。我们想在测试环境中测试这个内部服务。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -137,9 +139,9 @@ curl http://www.example.org -x localhost:5555 -X GET
|
|||||||
|
|
||||||
### 未来方向
|
### 未来方向
|
||||||
|
|
||||||
我们希望将来可以支持非 HTTP 协议(如 FTP 或 JDBC),甚至可以让用户使用 MITM 代理框架来自行注入自己的定制协议。我们将继续改进 Flashback 设置 API,使其支持非 Java 语言更容易。
|
我们希望将来可以支持非 HTTP 协议(如 FTP 或 JDBC),甚至可以让用户使用 MITM 代理框架来自行注入自己的定制协议。我们将继续改进 Flashback 设置 API,使其更容易支持非 Java 语言。
|
||||||
|
|
||||||
### 现在作为一个开源项目可用
|
### 现在为一个开源项目
|
||||||
|
|
||||||
我们很幸运能够在 GTAC 2015 上发布 Flashback。在展会上,有几名观众询问是否将 Flashback 作为开源项目发布,以便他们可以将其用于自己的测试工作。
|
我们很幸运能够在 GTAC 2015 上发布 Flashback。在展会上,有几名观众询问是否将 Flashback 作为开源项目发布,以便他们可以将其用于自己的测试工作。
|
||||||
|
|
||||||
@ -159,7 +161,7 @@ Flashback 由 [Shangshang Feng][19]、[Yabin Kang][20] 和 [Dan Vinegrad][21]
|
|||||||
|
|
||||||
作者简介:
|
作者简介:
|
||||||
|
|
||||||
Shangshang Feng - Shangshang 是 LinkedIn 纽约市办公室的高级软件工程师。他花了三年半的时间在 LinkedIn 的网关平台工作。在加入 LinkedIn 之前,他曾在 Thomson Reuters 和 ViewTrade 证券的基础设施团队工作。
|
Shangshang Feng - Shangshang 是 LinkedIn 纽约市办公室的高级软件工程师。在 LinkedIn 他从事了三年半的网关平台工作。在加入 LinkedIn 之前,他曾在 Thomson Reuters 和 ViewTrade 证券的基础设施团队工作。
|
||||||
|
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user