$30 off During Our Annual Pro Sale. View Details »

AI自動テストツールを支える開発・テストプロセス

Nozomi Ito
January 23, 2021

 AI自動テストツールを支える開発・テストプロセス

Agile TEch EXPO - New Normal Agile Episode1 - ( https://202101.agiletechexpo.com/ )の登壇資料です。

Nozomi Ito

January 23, 2021
Tweet

More Decks by Nozomi Ito

Other Decks in Technology

Transcript

  1. AI自動テストツールを支える
    開発・テストプロセス
    TRIDENT
    伊藤 望

    View Slide

  2. About Me
    p 伊藤 望(Ito Nozomi)
    p 株式会社TRIDENT代表取締役
    n AI自動テストツール「Magic Pod」の運営
    p 日本Seleniumユーザーコミュニティ主宰
    p 著書

    View Slide

  3. Magic Pod (@TRIDENTInc)
    p E2Eテスト自動化クラウドサービス
    p Webとモバイルアプリのテストに対応
    p AI技術を活用
    n テストスクリプトを読みやすい日本語化
    n テスト対象画面に変更があったら、テスト手順を自動修正
    p 利用者も順調に増加中

    View Slide

  4. 今日話すこと
    1. なぜ今テスト自動化なのか
    2. Magic Pod開発の体制
    3. Magic Pod開発のテスト自動化
    4. Magic Pod開発のCI運用

    View Slide

  5. 1. なぜ今テスト自動化なのか
    2. Magic Pod開発の体制
    3. Magic Pod開発のテスト自動化
    4. Magic Pod開発のCI運用

    View Slide

  6. テスト自動化とは
    p テスト手順をプログラム化しておくと、コンピュータが
    自動でテスト実行してくれる。
    システム全体を通しでテスト
    UIテストツールなどを活用
    複数の部品を結合してテスト
    APIテストツールなどを活用
    個々の関数やクラスのテスト
    ユニットテストツールなどを活用
    E2E Test
    Integration
    Test
    Unit Test

    View Slide

  7. アジャイル開発で重要なこと
    プロセス 技術
    カギは「自動化」

    View Slide

  8. アジャイル開発と「自動化」
    ビルド
    テスト
    リリース
    設計
    開発
    ビルド
    テスト
    リリース
    設計
    開発
    ビルド
    テスト
    リリース
    設計
    開発

    View Slide

  9. アジャイル開発と「自動化」
    ビルド
    テスト
    リリース
    設計
    開発
    ビルド
    テスト
    リリース
    設計
    開発
    ビルド
    テスト
    リリース
    設計
    開発
    自動化しないと
    繰り返し困難

    View Slide

  10. アジャイル開発と「自動化」
    ビルド
    テスト
    リリース
    設計
    開発
    ビルド
    テスト
    リリース
    設計
    開発
    ビルド
    テスト
    リリース
    設計
    開発
    一番工数がかかるのに
    一番自動化が難しい

    View Slide

  11. なぜ今テスト自動化なのか
    p フィードバックのサイクルを早くするには
    「テストの自動化」がカギだから
    p 「開発サイクルの高速化」を目的とした自動化が増加
    n 従来は「コスト削減」がメイン

    View Slide

  12. 1. なぜ今テスト自動化なのか
    2. Magic Pod開発の体制
    3. Magic Pod開発のテスト自動化
    4. Magic Pod開発のCI運用

    View Slide

  13. Magic Podの開発環境
    p Webサーバ・AIエンジン: Python、Django
    p 自動テストエンジン: Node.js
    p 開発者: 約6人
    p QA: 0人
    n ただし、
    n 本書いている人とか、Selenium/Appiumコントリビュータとか
    p ほぼフルリモート
    p 読み書き(Slack、GitHub等)は英語
    テスト自動化のエキスパートは多数

    View Slide

  14. Magic Podの開発フロー
    p アジャイル的開発
    p 2週間ごとのイテレーション(& リリース)
    n 細かいパッチリリースは随時
    p ビルド、デプロイは自動化

    View Slide

  15. Magic Podの開発フロー
    p テスト
    n 新規開発部分は各自手動テスト
    n 一部のテストは自動化
    n リリース前の3日間は社内ドッグフーディング
    3日前
    main
    branch
    次の開発
    feature
    branches
    リリース
    次の開発

    View Slide

  16. 1. なぜ今テスト自動化なのか
    2. Magic Pod開発の体制
    3. Magic Pod開発のテスト自動化
    4. Magic Pod開発のCI運用

    View Slide

  17. Magic Podのテスト自動化
    p 全テスト自動化はできないので、絞って自動化
    p 手動テスト量の削減 & リグレッションの削減を目指す

    View Slide

  18. どのテストを自動化するか
    1. 自動化コストが低いところ
    2. 処理が複雑なところ
    3. 重要なところ

    View Slide

  19. どのテストを自動化するか
    1. 自動化コストが低いところ
    2. 処理が複雑なところ
    3. 重要なところ
    AIエンジン
    静的解析
    セキュリティ、自動テストエンジン、主要画面

    View Slide

  20. 1. 自動化コストが低いところ
    p ツールを設定するだけでチェックができるもの
    p スクリプトのメンテナンスが(ほぼ)不要なもの
    p Magic Pod開発でやっているもの:
    n ソースコード静的解析
    p やっていないもの:
    n Botでサイトリンクをたどり404エラー検出(モンキーテスト)
    n アプリクラッシュ検知(Firebase Crashlytics)

    View Slide

  21. ソースコード静的解析
    p Python: PyLint
    p JavaScript: ESLint
    p nginx: 構文チェック

    View Slide

  22. ソースコード静的解析
    p PyLint、ESLint
    n 動的型言語だと、コンパイラ代わりになるので効果的
    n 静的型言語だと、書式統一以上のメリットは少ないかも
    p nginx構文チェック
    n 構文が間違っているとサーバが起動しなくなるので、
    チェックは効果的

    View Slide

  23. 2. 処理が複雑なところ
    p そもそも複雑すぎて人力では品質を担保できないロ
    ジック
    n テストコードを書きながら開発を進めることが不可欠
    p Magic Pod開発でやっているもの:
    n AIエンジンのUnit Test、Integration Test

    View Slide

  24. AIエンジンのUnit Test
    - UI解析AIのテスト
    p UI画像とツリーを解析し、操作できる要素をリスト
    アップするAI
    n 特殊な画面のパターンを多数テスト

    View Slide

  25. AIエンジンのUnit Test
    - 自動修復AIのテスト
    p テスト対象画面のバージョンアップでテストが失敗し
    そうになった時に、スクリプト側を自動修正するAI
    n どんな失敗をどう修正するかのパターンを多数テスト

    View Slide

  26. AIエンジンのIntegration Test
    - 自動修復AIのテスト
    p 複数のテストで使い回されている要素の修復など
    p DBを使ったテスト
    n レコード数を少なくすれば、DBアクセスしても十分高速
    p 画面やWeb APIは特に利用しない
    MySQL
    テストコード
    (pytest)

    View Slide

  27. 3. 重要なところ
    p 不具合があるとビジネスインパクトが大きいところ
    p Magic Pod開発でやっているもの:
    n セキュリティテスト(Integration Test)
    n 自動テストエンジンのテスト(E2E Test)
    n 主要な画面のテスト(E2E Test)

    View Slide

  28. セキュリティテスト
    (Integration Test)
    p ふだん目に見えないので軽視しがちなので注意
    p 問題が起きると最悪サービス終了くらいのインパクト
    p テスト内容は割愛

    View Slide

  29. 自動テストエンジンのテスト
    (E2E Test)
    自動テストツールが最も避けるべきこと

    View Slide

  30. 自動テストエンジンのテスト
    (E2E Test)
    自動テストツールが最も避けるべきこと
    テスト対象にバグが無いのに
    テスト失敗すること

    View Slide

  31. 自動テストエンジンのテスト
    (E2E Test)
    偽のテスト失敗が続くと…
    テスト結果をチェックする
    優先度が下がる
    テストのエラーが
    放置されるようになる
    自動化プロジェクト
    失敗



    View Slide

  32. 自動テストエンジンのテスト
    (E2E Test)
    p ユーザーが作ったテストがMagic Podのバージョン
    アップで落ちないことはとても重要
    p 対策は、TRIDENT社内で大量のMagic Podテストを流
    すこと

    View Slide

  33. 自動テストエンジンのテスト
    (E2E Test)
    各コマンド 各ブラウザ・OS 各環境
    × ×
    Magic Podクラウド
    ローカル端末

    View Slide

  34. 自動テストエンジンのテスト
    (E2E Test)
    p 各コマンドのテスト(モバイルアプリテスト)

    View Slide

  35. 自動テストエンジンのテスト
    (E2E Test)
    p 各コマンドのテスト(ブラウザテスト)

    View Slide

  36. 自動テストエンジンのテスト
    (E2E Test)
    p ひたすら色々なブラウザ・OS・環境で実行
    モバイルアプリテスト
    (On CircleCI)
    ブラウザテスト (On CircleCI)
    ブラウザテスト (On AppVeyor)

    View Slide

  37. 自動テストエンジンのテスト
    (E2E Test)
    p テスト結果(iOSアプリテスト)

    View Slide

  38. 自動テストエンジンのテスト
    (E2E Test)
    p テスト結果(ブラウザテスト)

    View Slide

  39. 自動テストエンジンのテスト
    (E2E Test)
    p テストパターンは他にも…
    p Magic Pod内スケジューラからのテスト実行
    p Bitriseからのモバイルアプリテスト実行
    p 下位バージョンのクライアントの互換性テスト

    View Slide

  40. 主要な画面のテスト
    (E2E Test)
    p ユーザー登録、テスト作成・編集、有料プラン申込、
    などなど
    p Magic PodでMagic Podの画面テストを自動化
    n ドッグフーディングにもなる

    View Slide

  41. 主要な画面のテスト
    (E2E Test)
    p Magic PodによるMagic Pod画面のテスト

    View Slide

  42. 主要な画面のテスト
    (E2E Test)
    p Magic PodによるMagic Pod画面のテスト

    View Slide

  43. 主要な画面のテスト
    (E2E Test)
    p Magic PodによるMagic Pod画面のテスト(テスト結果)

    View Slide

  44. 主要な画面のテスト
    (E2E Test)
    p ついでに画像差分チェックも実施(reg-cli)
    p 正解画像1枚で画面全体の項目とレイアウトが
    チェックできるので、コスパがいい

    View Slide

  45. 主要な画面のテスト
    (E2E Test)
    p 画像差分チェック(reg-cli)

    View Slide

  46. どのテストを自動化するか
    まとめ
    1. 自動化コストが低いところ
    2. 処理が複雑なところ
    3. 重要なところ
    AIエンジン
    静的解析
    セキュリティ、自動テストエンジン、主要画面

    View Slide

  47. 1. なぜ今テスト自動化なのか
    2. Magic Pod開発の体制
    3. Magic Pod開発のテスト自動化
    4. Magic Pod開発のCI運用

    View Slide

  48. Magic Pod開発のCI運用
    p GitHubにプルリクエストを出しながら開発を進める
    p 変更がコミットされた各タイミングでCircleCIによるビル
    ドを実施
    main
    branch
    プルリクエスト
    プルリクエスト
    feature
    branches

    View Slide

  49. プルリクエストをマージする前
    p feature branchesでは、高速に終わる「静的解析」
    「Unit Test」を実施
    p コードレビュー前に一定の品質を担保

    View Slide

  50. プルリクエストをマージした後
    p main branchでは、さらに「Dockerコンテナのビルド」
    「結合テスト」も実施
    p 変更がコミットされるたび

    View Slide

  51. E2E Test
    p 1日 1〜2回実施
    p メンバーが増えたら、ここの頻度もあげた方がいいかも

    View Slide

  52. 1. なぜ今テスト自動化なのか
    2. Magic Pod開発の体制
    3. Magic Pod開発のテスト自動化
    4. Magic Pod開発のCI運用

    View Slide

  53. まとめ
    p テスト自動化により、アジャイル開発・継続的リリース
    が容易になる
    p 自動テストツールも自動テストしてます

    View Slide

  54. 宣伝
    https://www.wantedly.com/companies/trident-qa

    View Slide

  55. ありがとうございました!

    View Slide