Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テストの自動化~簡単に始める、みんなで使う、現況を捉える

 テストの自動化~簡単に始める、みんなで使う、現況を捉える

2023/08/30 開催のオンラインイベント「三社三様!テスト自動化アプローチのあれこれ共有会」にて、CircleCI から「テストの自動化~簡単に始める、みんなで使う、現況を捉える」と題してお話させていただいた際のスライドです。

https://shiftevolve.connpass.com/event/289248/

More Decks by Masahiko Funaki(舟木 将彦)

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. 4
    CI (継続的インテグレーション) とは?
    開発者が書いたソースコードをリポジトリにマージすることで、
    ビルドやテストを自動的に実行する開発の手法です。

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide