非常に使いやすい回帰テスト ツールですが、まだ使用を許可しません。

AREX は、実際のリクエストとデータ (プロジェクト アドレス: https://github.com/arextest)に基づくオープンソースの自動回帰テスト プラットフォームであり、 Java エージェント テクノロジと比較テクノロジを使用して、トラフィックの記録と再生機能のテストを通じて高速かつ効果的な回帰を実現します。 。同時に、インターフェイステストやインターフェイス比較テストなどの自動テスト機能も豊富に提供しているため、プログラミングスキルがなくてもすぐに始めることができます。

AREX トラフィック記録機能を使用すると、AREX Java エージェントは本番環境の Java アプリケーションのデータ トラフィックとリクエスト情報を記録し、この情報を AREX データ アクセス サービス (ストレージ サービス) に送信し、ストレージ サービスにインポートされます。保存する Mongodb データベース。リプレイテストが必要な場合、AREXスケジュールサービスは、ユーザーの設定とニーズに従って、データアクセスサービスを通じてデータベースからテスト対象アプリケーションの記録データ(リクエスト)を抽出し、ターゲット検証サービスにインターフェースリクエストを送信します。 。同時に、Java エージェントは記録された外部依存関係 (外部リクエスト/DB) 応答をテスト対象のアプリケーションに返し、ターゲット サービスはリクエスト ロジックの処理後に応答メッセージを返します。次に、スケジューリング サービスは、記録された応答メッセージと再生応答メッセージを比較してシステム ロジックの正しさを検証し、比較結果を分析サービス (レポート サービス) にプッシュします。分析サービスは、テスターが確認するための再生レポートを生成します。プロセス全体を通じて、AREX のキャッシュ サービス Redis は、比較効率を向上させるために、再生中にモック データと比較結果をキャッシュする役割を果たします。

この記事では、このcommunity-testツールを例として、AREX Agent の設定から記録と再生、問題の特定に至る AREX インターフェイスの自動回帰テストのプロセス全体を完全に説明します。

community-test( https://github.com/arextest/arex-community-test) は、 AREX システム機能のテストと検証のために AREX が提供するツールで、シミュレーション ビジネス サービスのために MySQL と Redis に依存する Java アプリケーションです。

AREX動作環境

筆者は、OPS が提供するデバイスであるアプリケーション環境に Linux サーバーを申請しました。

サーバーの IP アドレスは 10.5.153.1 で、128 GB のメモリと 32 コアを備えています。サーバーには社内ネットワーク経由でアクセスできますが、他の外部環境からはアクセスできません。主な目的は、AREX サービスをインストールし、このサーバーにコミュニティ テスト テスト環境を展開することです。

サーバーがパブリック ネットワークにアクセスできるようにするには、いくつかの設定を行う必要があります。インストールプロセス中に、AREX のインストールパッケージをダウンロードし、コンパイルしてリリースするためのコミュニティテストのコードを取得する必要があります。サーバーがパブリック ネットワークに直接アクセスできる場合は、プロキシを設定する手順を省略できます。それ以外の場合は、サーバーがパブリック ネットワークにアクセスできるようにプロキシを設定する必要があります。

ポートに関しては、外部に公開されるポートの数に制限はありません。ただし、OPS は各サーバーを制限し、デフォルトでは外部アクセス用のポート 80 と 8080 のみが許可され、その他のポートはデフォルトでブロックされます。

また、リモートアクセスは制限されており、今回のデモン​​ストレーションでは踏み台マシンを介してサーバーにログインします。

録音再生による回帰テスト

AREX をインストールする

10.5.153.1 にリモートでログインし、新しいディレクトリを作成しますarex

cd arex
git clone https://github.com/arextest/deployments.git

次のコマンドを実行して AREX を起動します。

# 读取当前目录的docker-compose.yml文件,并以服务的方式启动
docker-compose up -d
# 读取当前目录的docker-compose-distribute.yml文件,并以服务的方式启动
docker-compose -f docker-compose-distribute.yml up -d
# 读取当前目录的docker-compose-mongo4.4.21.yml文件,并以服务的方式启动, 因为某些服务器硬件版本的原因,不能启动5.0的mongodb
docker-compose -f docker-compose-mongo4.4.21.yml up -d

起動後、docker-compose psコマンド。

  • Stateは各サービスの状態で、Up が正解ですが、それ以外の状態の場合はサービスを再起動するか、サービスログを確認して起動できない原因を確認する必要があります。
  • arex-frontはフロントエンドです。ここではポートは変更されていません。デフォルトはポート 8088 です。ポート 80 など、環境に応じて任意のポートを設定できます。
  • MongoDBのポートはデフォルトの 27017 のままです (MongoDB ツールを使用してデータベースに接続することもできます)、リンク アドレスは 10.5.153.1:27017、ユーザー名は「arex」、パスワードは「iLoveArex」です。 。Docker Compose の構成では、サービス名が Docker Compose のネットワーク接続に使用されるため、リンク アドレスはmongodb://arex:iLoveArex @mongodb :27017/arex_storage_db である必要があることに注意してください。したがって、次のアドレスを使用して MongoDB にアクセスできます: mongodb://arex:iLove [email protected] :27017/arex_storage_db。
  • arex-storageのポートは 8093 で、これはエージェント構成で指定する必要があるポートです。私の環境で設定されているストレージアドレスは 10.5.153.1:8093 です。

docker-compose images各サービス コンポーネントの実行バージョンを表示するために使用します。

AREX の各コンポーネントは 0.2.10 で、arex-nodeサービスは今後削除されますが、機能は更新されておらず、バージョン 0.2.7 のままです。

起動後、現在の起動ディレクトリの下に 2 つのディレクトリが存在します。その中にarex-logsは、arex-dataデータを保存するために使用される各サービスのログがあります。

起動後、コマンドラインでログを表示できます。

  • docker-compose logs: すべてのログを表示
  • docker-compse logs arex-report-service:レポートサービスのログを表示します。

インストール後、以下に示すように、AREX フロントエンド ページhttp://10.5.153.1:8088/ にアクセスし、電子メール アドレスを入力してログイン用の確認コードを取得します。

ここまででAREXのインストールは完了です。

コミュニティテストビジネスサービスのインストール

AREX エージェント コードをダウンロードしてコンパイルする

git clone https://github.com/arextest/arex-agent-java.git
cd arex-agent-java
mvn clean package

コンパイルが完了しました。

現在のディレクトリの arex-agent-jar ディレクトリをチェックして、最新のコンパイル済み arex エージェント jar ファイルがあるかどうかを確認します。

コミュニティテストコードをコンパイルする

プルコード:

git clone https://github.com/arextest/arex-community-test.git

プロジェクトをmvn clean packageコンパイルします

操作の便宜のため、コンテナ化されたデプロイメントがcommunity-test実行されます。

FROM tomcat:9.0-jdk8-openjdk

ARG WAR_FILE=./target/arex-agent-test-0.0.1-SNAPSHOT.war
ADD $WAR_FILE /usr/local/tomcat/webapps/

WORKDIR /usr/local/tomcat/conf
RUN sed -i 'N;152a\\t<Context path="" docBase="arex-agent-test-0.0.1-SNAPSHOT" reloadable="true" />' server.xml

ADD ./arex-agent-0.2.0.jar /usr/local/tomcat/
ADD ./arex-agent-bootstrap-0.2.0.jar /usr/local/tomcat/

WORKDIR /usr/local/tomcat
EXPOSE 8080
CMD ["catalina.sh","run"]

コンテナ化されたコンパイル シェルは次のとおりです (参照のみ)。相対ディレクトリは変更が必要になる場合があります。

cd ../arex-community-test
mvn clean package
 
cp ../deployments/dockerfile/community.Dockerfile ./Dockerfile
cp ../arex-agent-java/arex-agent-jar/arex-agent-0.3.0.jar ./arex-agent-0.3.0.jar
cp ../arex-agent-java/arex-agent-jar/arex-agent-bootstrap-0.3.0.jar ./arex-agent-bootstrap-0.3.0.jar
 
docker build -t arexadmin01/arex-community-test:0.0.1  .
 
rm -rf ./Dockerfile
rm -rf ./arex-agent-0.3.0.jar
rm -rf ./arex-agent-bootstrap-0.3.0.jar
 
cd ..

ここまでで、テスト用のプログラムイメージが作成できました。

SUT アプリケーション構成 AREX エージェント

以下は、community-test ツールを実行するときに使用される元のコマンド ラインで、次のようにデータベースと Redis との接続構成を提供します。

environment:
      - JAVA_TOOL_OPTIONS=-Dspring.datasource.url=jdbc:mysql://cmysql:3306/community?useUnicode=true&characterEncoding=utf-8 -Dspring.datasource.username=arex_admin -Dspring.datasource.password=arex_admin_password -Dspring.redis.host=credis -Dspring.redis.port=6379

AREX 構成を追加します。

environment:
      - JAVA_TOOL_OPTIONS='-javaagent:/usr/local/tomcat/arex-agent-0.3.0.jar' -Darex.service.name=community-service -Darex.storage.service.host=10.5.153.1:8093 -Darex.enable.debug=true  -Dspring.datasource.url=jdbc:mysql://cmysql:3306/community?useUnicode=true&characterEncoding=utf-8 -Dspring.datasource.username=arex_admin -Dspring.datasource.password=arex_admin_password -Dspring.redis.host=credis -Dspring.redis.port=6379
  • '-javaagent:/usr/local/tomcat/arex-agent-0.3.0.jar' この部分はコンパイルした AREX エージェントの JAR ファイルであり、JAR ファイルは Java エージェント (Java) としてアプリケーションにロードされます。エージェント)。
  • -Darex.service.name=community-service: AREX Replay ページに表示されるアプリケーションの名前です。
  • -Darex.storage.service.host=10.5.153.1:8093: これは AREX ストレージ サービスのアドレスであり、 として指定されます10.5.153.1:8093
  • -Darex.enable.debug=true: これは構成オプションであり、 に設定するとtrue、デバッグ モードで実行され、すべてのトラフィックが記録されます。運用環境では、これを に設定することをお勧めしますfalse

arex-community-testサービスを開始し、AREX フロントエンド ページでアプリケーションの登録ステータスを確認します。

テストされたアプリケーションが正常にcommunity-test実行

回帰試験

本番環境のリリースと実行

これで、arex-agent が正常に起動され、アプリケーション内で実行されました。記録プロセス中、ユーザーは特別な操作や介入を行う必要はなく、通常の方法で外部サービスを提供したり、アプリケーションに手動でアクセスしたりできます。

この記事のデモでは、Collection のバッチ実行機能community-serviceをアクセスしており、アクセスアドレスはhttp://10.5.153.1:8080/ です。

アクセスプロセス中に、arex-agent は自動的に記録を開始し、記録された AREX ユースケースを保存します。ユーザーによる手動の記録操作は必要ありません。

ビジネスコードの更新

ビジネス要件が実現され、送信された後、新しいバージョンをコンパイルしてテストする必要があり、次の手順が実行されます。

  1. 新しいコードをプルする
  2. コードをコンパイルしてパッケージ化する
  3. 重要: AREX エージェントの構成、特に AREX がアプリケーションを識別し、ユースケースを管理するために使用するアプリケーション名を変更しないでください。したがって、新しいバージョンのコンパイルおよびテスト中は、以前のバージョンと同じアプリケーション名の構成を維持する必要があります。
  4. コードをテスト環境にリリースする: コンパイルおよびパッケージ化されたアプリケーション コードを、さらなるテストと検証のためにテスト環境にリリースします。

テスト環境での回帰テスト

AREX 再生ページに入り、 [community-serviceサービス]、右側の再生インターフェイスの [再生開始] ボタンをクリックして、再生アドレスを入力します (同じ環境を使用しているため、アドレスはhttp://10.5.153.1:8080/のままです) )、再生を開始します。

テスト問題の場所

テスト比較が差異なく完全に実行された場合、テストは合格します。

テスト中に問題が見つかった場合は、次のようにします。

次の図に示すように、問題のある再生レポートをクリックすると、すべてのインターフェイスとその回帰テストが表示されます。

DiffScenes(New)をクリックすると、全体の統計ビューに差分ポイントが表示されます。value diff、これは古いバージョンと新しいバージョンの間の値の差です。

次の図に示すように、相違点をクリックし続けると、相違点の詳細が表示されます。左側は本番環境で記録された値であるベンチマーク、右側はテスト環境の再生時に返される値であるテストであり、両者が一致しない場合は差分情報が返されます。

見つかった相違点に基づいて、コード内の問題点を見つけます。

  • 問題を確認し、問題を修正し、「ビジネス コードの更新」の章を繰り返し、修正→テスト リリース→比較を繰り返します。
  • 問題がないことが確認された場合は、このノードをフィルタ ノードとして設定し、次回の再生ではこのノードの比較をスキップします。
  • この操作を続行して、すべての差異が修正されているか、差異が予想範囲内にあることを確認します。
  • 修正とリリースを確認します。

AREX ドキュメント: http://arextest.com/zh-Hans/docs/intro/

AREX公式サイト: http: //arextest.com/

AREX GitHub:https://github.com/arextest

AREX公式QQコミュニケーショングループ:656108079

{{名前}}
{{名前}}

Supongo que te gusta

Origin my.oschina.net/arextest/blog/9026435
Recomendado
Clasificación