Slide 1

Slide 1 text

1 テストの自動化 簡単に始める、みんなで使う、 現況を捉える 三社三様!テスト自動化アプローチのあれこれ共有会 Masahiko Funaki (舟木将彦) @mfunaki Principal Developer Advocate

Slide 2

Slide 2 text

2 Agenda テスト自動化を始める テストを自動化し倒す 自動テストした結果を捉える 1 2 3

Slide 3

Slide 3 text

3 1. テスト自動化を始める

Slide 4

Slide 4 text

4 CI (継続的インテグレーション) とは? 開発者が書いたソースコードをリポジトリにマージすることで、 ビルドやテストを自動的に実行する開発の手法です。 … リリースに向けた一連の手順を決め、それを CI/CDパイプラインという形で 定義し実行することで、誰が実施しても、同じ流れのデプロイを実現できます。 このCI/CDにより、リリースに対するアジリティが高まることが利点のひとつ ですが、筆者にはリリースに対する心理的ハードルが下がることが、 一番のメリットであると考えています。 〜新井雅也/馬勝淳史(2020)『AWSで学ぶクラウドネイティブ実践入門』

Slide 5

Slide 5 text

5 テスト自動化に取り掛かろう 「Java(Maven)プロジェクトのビルドを CircleCI+Orbsで自動化」  https://qiita.com/mfunaki/items/b393a531e4b04a224368

Slide 6

Slide 6 text

6 2. テストを自動化し倒す 並列実行、実行環境のスペック変更、テスト環境への SSH ログイン

Slide 7

Slide 7 text

7 クラウド上のCI環境で自動テストを実行する利点 ● 誰でも実行できるし、誰がやっても同じ結果が得られる 誰かのビルド環境/テスト環境に依存しない。 ソースコードを作成/修正して、コミット、プッシュすれば、 クラウド上で自動的に実行される。 ● テストの抜け漏れがない ○ 不注意による抜け漏れ(コマンドを実行し忘れた) ○ 故意の抜け漏れ (「ここの部分の修正であれば、このテストは実行しなくてもよいはず」 ) だけであれば、(もしかしたら)注意深い人が慎重に自分の環境でテストを手動実行 すればよいのでは?

Slide 8

Slide 8 text

8 2.1 並列実行で時間短縮 2. テストを自動化し倒す

Slide 9

Slide 9 text

9 テストを並行実行して完了時間を短縮(1) 並列実行時の割り振り方 •ファイル名のアルファベット順 •過去のテスト実行時の所要時間 ベースで均等割(timings) •ファイルサイズで均等割 (filesize) •マニュアル指定

Slide 10

Slide 10 text

10 テストを並行実行して完了時間を短縮(2) 時間は1/3、 費用はほとんど変わらない 100秒かかるテストケースを 見直さないと、 並列数を増やしても、 これ以上の短縮は見込めない。

Slide 11

Slide 11 text

11 2.2 実行環境のスペック変更 2. テストを自動化し倒す

Slide 12

Slide 12 text

12 CircleCIで利用可能な実行環境(リソースクラス)一例

Slide 13

Slide 13 text

13 Stable Diffusion のテストをCPU/GPU/M1 Macで Executorなど一部の定義を 外出しすることで、 プラットフォームを跨って (かつ並列で)テスト実行が 可能!

Slide 14

Slide 14 text

14 2.3 テスト環境へのSSHログイン 2. テストを自動化し倒す

Slide 15

Slide 15 text

15 SSHでシェルにログイン 自動テストを実行するワークフローを組む過程で シェル上で確認・検証したい場合に「非常に」有用 (「自動化するまでが大変」を大幅に軽減)

Slide 16

Slide 16 text

16 シェルの利用だけでなくポートフォワードも可能 sshでCircleCIのテスト環境にログインする際、 ポートフォワードも合わせて設定 ssh -p NNNNN -L 7860:localhost:7860 aa.bbb.ccc.ddd あとはローカルのブラウザ上で localhost:7860 に アクセスすることで、 CircleCI クラウドのテスト環境 (GPU/CPU/Apple Silicon)を使って実際の動作を確認可能 Programmar drinking coke wearing jeans

Slide 17

Slide 17 text

17 3. 自動テストした結果を捉える

Slide 18

Slide 18 text

18 Tests Insights で自動テストの結果からインサイトを 1ワークフローあたりの 平均テスト実行数 Flakyな(結果が不安 定な)テストの検出数 失敗した テストの数 (P95の中で)最も遅い テストの所要時間 グラフをクリックすることで、 実際にどのテストが成功/失敗 して、時間がかかっているのか 簡単に参照可能

Slide 19

Slide 19 text

19 並列実行の効果もダッシュボード上で可視化可能

Slide 20

Slide 20 text

CircleCIをもっと知りたい!なら 最新の情報なら @CircleCIJapan をフォロー! #CircleCIJp タグつけて情報共有! イベント、セミナー、勉強会の情報なら connpassのCircleCIグループから! https://circleci.connpass.com/ 動画でCircleCIについて学ぶなら CircleCIチャンネルを登録! (日本語プレイリストもあり )