こんにちは、かとあず(@kato_az)です。弥生でQAエンジニアをしています。
好きな勘定科目は未払金です。
先日、MagicPodを導入したブログを公開しました。
tech-blog.yayoi-kk.co.jp
今回は、自動化したシナリオの実行時間が本気を出した手動実行実行よりも遅かったことと、それに対応したお話しです。
リグレッションテストを自動化
ひとこと「リグレッションテスト」と言っても想像するものは人それぞれです。「あなたが言っているEndはどこのこと?」となると理解がずれてしまいます。
今回は、システムテストのリグレッションを自動化しました。具体的には、「テスト対象のスマート証憑管理にデータが入ってくる処理」から「スマート証憑管理がデータを送信する処理(と、確実に送信できたことを確認する)処理」を範囲としています。
チームが自動化したシナリオのひとつに、
Misocaからスマート証憑管理に証憑データを連携し、スマート証憑管理からYAYOI SMART CONNECTに仕訳情報を連携するシナリオ
があります。
自動化してみた
Misocaからスマート証憑管理に証憑データを連携し、スマート証憑管理からYAYOI SMART CONNECTに仕訳情報を連携するシナリオ
をもう少し具体的に書いてみます。
- Misocaにログインする
- Misocaで証憑を作成する
- Misocaの操作でスマート証憑管理に証憑を連携する操作をする
- Misocaからログアウトする
- 連携を少し待つ
- スマート証憑管理にログインする
- スマート証憑管理で連携内容を確認する
- スマート証憑管理で仕訳登録を実行する
- スマート証憑管理からログアウトする
- 連携を少し待つ
- 弥生会計 オンラインにログインする
- YAYOI SMART CONNECTに画面遷移する
- YAYOI SMART CONNECTの「未確定の取引」に仕訳データが連携されていることを確認する
ここまでが目的としている連携のテストです。
この後、繰り返しテスト実行ができるよう、データの片付け処理をしていきます。
- YAYOI SMART CONNECTの「未確定の取引」に登録された仕訳データを削除する
- 弥生会計 オンラインからログアウトする
- Misocaにログインする
- Misocaで作成した証憑を選択し、ゴミ箱に入れる
- Misocaからログアウトする
- 連携を少し待つ
- スマート証憑管理にログインする
- スマート証憑管理でMisocaから連携された証憑が、「削除済みの証憑」に移動していることを確認する
- スマート証憑管理からログアウトする
連携を1パターン実行するのにこれだけの操作が必要になります。
手順で記載している「連携を少し待つ」は、システム間の連携です。連携が完了するまでにかかる時間は、各システムの負荷状況によるため一定ではありません。
手動でテストしている際は、様子を見て画面更新しながらしばし待つという対応をしています。自動テストでは「様子を見ていい感じのタイミングで次の確認を始める」という手順が作れず、どうしても「一定時間の待機処理」に頼ってしまっています。
Misocaからスマート証憑管理への連携方法は全部で11パターンあります。
手動で実行しているリグレッションテストでは、テストのたびにランダムにパターンを選んで確認をしていますが、自動テストでは全11の連携パターンを作成しました。全11パターンを作成したら毎回全パターンの実行をしたくなりました。
実行!
11パターンのテストを実行し終えるのに、約120分かかりました。
自動化したことで、早朝や深夜、昼休み、ミーティング中、他の作業をしながらテスト実行ができるため、人が作業をする時間は実行結果を目視確認する1分程度になり「ほぼゼロ」と言えます。
ただ、11パターンを私が本気を出して手動で実行したら120分もかからないのです。
改善、開始
一つ一つの処理は、手動実行するより自動実行した方が確実に早いにもかかわらず、全体の実行時間が長くなっている主な原因は以下2点です。
- ログイン処理
- システム間連携の待ち時間
1点目 ログイン処理について
弥生のサービスでは、前回ログイン情報のセッションが残ってしまったときに、重複ログインの確認画面を表示します。
この重複ログインの確認画面を表示した場合、処理を続行する選択をしてから進まなければなりません。
ほとんどのテスト実行では発生しないのですが、テスト実行前に正常終了できていなかった場合やセッションが残ってしまった場合、重複ログインの確認画面でテスト実行が進めなくなってしまいテストがFailで終わってしまいます。このため、「重複ログイン画面が出た場合」の分岐処理を入れる必要がありました。
これにより、手動のログイン実行よりも時間がかかってしまっています。
今後改善できるかもしれませんが、すぐに対応できる解決策がみつからないため、ひとまずテストが安定してPassするために処理の変更は入れませんでした。
2点目 システム間連携の待ち時間について
確実にシステム間のデータ連携が完了してしてから次の処理に進めるように調整をした結果、「60秒待機」「120秒待機」といった待機時間が入ることになってしまいました。
「画面更新がされたら次のステップに進む」という設定にすることで待機を最小限まで短縮することも考えましたが、自動で描画が更新されないこともあり、手順の作成が複雑になってします。
そこで思い切ってテストケースの実行順序を変更し、まとめて確認できる内容については、1回ずつ確認するのではなく、まとめて確認をするようにケースを組み替えることにしました。
Misocaからスマート証憑管理への請求書連携を例にして、具体的に説明していきます。
請求書連携テスト変更前
変更前は、連携方法ごとにケースを作成していました。請求書の連携では4つのケースになっています。
計画したシナリオのとおりになっています。
請求書連携テスト変更後
Misocaからスマート証憑管理へ連携しスマート証憑管理がYAYOI SMART CONNECTに連携を実行するところまでのケースと、YAYOI SMART CONNECTにデータ連携されたことの確認以降のケースを分離しました。
これにより、テストケースは1つ増えて請求書連携テストを完了するには、4ケースから5ケースが必要になりましたが、「連携待ち」の回数が減りました。
例示した、Misocaからスマート証憑管理への請求書連携と同じような組み替えを、Misocaからスマート証憑管理への納品書連携とMisocaからスマート証憑管理への見積書連携でも対応しました。
まとめ
11パターンのMisocaからスマート証憑管理への連携確認が約120分かかっていたところから、改善により約45分に短縮することができました。
手動で実行するよりもはやく正確にテスト実行ができるようになり、デプロイ完了から結果の確認までの短縮といったチーム内でのメリットと、「クラウド端末(テスト一括実行)」の専有時間が短くなるといった社内のチーム外へのメリットもありました。
自動テストのシナリオは、作成して終わりではありません。日々運用することで効果をもたらします。
テストの網羅率をあげることも大事ですが、作成したシナリオを運用し続け改善することも大事な対応の一つです。
今回は、はじめての自動化で手探りだったため、一度作成してから実行順序を組み替えるという方法をとりました。今後は実行する時間のことも考えてテストシナリオを検討し、テストケースを作成していきます。
弥生では、一緒に働く仲間を募集しています。