DevOps Testing: AIの力でリリースサイクルを加速する
Autify CEO 近澤 良
Mar 15, 2021

アジェンダ1.

Introduction

2.

リリースサイクルを速める重要性

3.

DevOpsとは

4.

テスト自動化の進め方

5.

E2Eテスト自動化の進め方

6.

DevOps Testing

7.

DevOps TestingにおけるAI

8.

まとめ

01.
Introduction

自己紹介

Ryo Chikazawa (近澤 良)●

エンジニア歴10年以上、３カ国で開発に従事●

ブログ「顧客のBurning needsを解決する」

AutifyのSolution
AIを用いたWeb/MobileアプリのE2Eテスト自動化サービスです。

No codeで誰でも簡単

AIがメンテナンス

事業の成長ローンチ半年で累計100社導入、現在は300社を超えました様々な組織のテスト自動化を支援

Autify for Web & Autify for Mobile

Autify for Webデモリクエスト受付中

Autify for Mobileβ登録受付中

02.
リリースサイクルを速める重要性変化の早い時代に

Software Is Eating the World●

著名投資家Marc Andreessenによる2011年のブログ記事●

ソフトウェアがあらゆるビジネスを飲み込む●

ニーズが多様化し、市場が急速に変化

ウォーターフォール開発の問題点

途中での手戻りが許されず、 変化に弱くリリースサイクルが長い→ リリースした頃にはユーザーが欲しいものは変わっているかも→ 競合が同じものを早く出すかも

変化の激しい市場 ではフィットしないサブスクリプションビジネスの台頭

サブスクリプションへの完全移行●

継続的に価値を届けないと解約される●

素早いリリースが重要になってくる●

Adobeはサブスクリプションへの完全移行
から株価が急騰し続けている

Adobeの株価

激しい変化の市場で成功する

変化の激しい時代で成功するには、素早いリリースサイクルが必須リリース頻度はどのくらいですか？
1.

週1回以上

2.

週1回

3.

隔週

4.

1ヶ月に1回5.

3ヶ月に1回

6.

半年に1回

リリース頻度調査

79.31%が月１回以上リリース→ 顧客ニーズの素早い変化に対応するには、高速なリリースサイクルが必要不可欠

03.
DevOpsとは

DevOpsとは●2009年のFlickrのプレゼンテーションが発端●

当時既に1日10回デプロイしていた

DevOpsとは●Plan - 企画●

Buid - 開発●

Continuous Integration - テスト●

Deploy - リリース●

Operate - 監視●Continuous Feedback - 企画へフィードバック

開発と運用が一体となり、速い開発サイクルを実現する

DevOpsAgile vs DevOps
DevOps

Agile●

Agileの延長でDevOpsが存在●

Agileが顧客と開発のギャップに焦点を当てたのに対し、DevOpsは開発と運用のギャップに焦点●

Agileが2 ~ 3週間でのリリースを目指すのに対し、DevOpsでは1日に複数回のリリースを目指す良くあるケース

Continuous Integrationが実現できずにテストがボトルネックになる高速なリリースサイクルにおけるテスト

リリースの度にテスト量が線形に増加→ 未テスト領域で障害が発生

手動のテストに依存しているとリリースサイクルを遅くするか障害のリスクを許容するかテスト自動化が必須に

高速なリリースサイクルの実現にはテスト自動化が必須

04.
テスト自動化の進め方

Unitテスト書いてますか？

Yes 🙆No 🙅テストピラミッド●

まずUnit/Integrationテストを書く●

カバーしきれない部分をE2E自動テスト/手動E2Eテストで補う

Unitテスト書いてますか？

Yes 🙆No 🙅

Ice cream cone●

Unit/Integrationテストがほとんどない●

大部分を手動E2Eテストに依存●

自動E2Eテストがほとんどない場合もなぜIce cream coneが起きるのか●

スピード優先で開発してきたためテストコードがない●

レガシーコードでUnit/Integrationテストが書きにくい●

テストへの理解が低い

Ice cream coneの解消●

リファクタリングを行い、テスタビリティを向上させる●

レガシーアーキテクチャをモダンに書き換える●

テストの啓蒙活動を行う
https://blog.autify.com/ja/how_can_we_improve_the_testability_of_applications

Ice cream coneの解消

Ice cream coneの解消は容易ではない→ E2Eテストを自動化して負荷を下げる

05.
E2Eテスト自動化の進め方エンジニアの人数は充分ですか？

Yes 🙆No 🙅

E2Eテスト自動化フレームワーク

E2Eテスト自動化フレームワークは数多く存在するエンジニア/SETが充分な場合●

実装フェーズにて、エンジニア/SETが開発した機能のE2E自動テストを実装。

●

ペアプロ的に実行し、DoDに含める。

●

USの大手企業などにあるパターン

エンジニアの人数は充分ですか？

Yes 🙆No 🙅

E2Eテスト自動化フレームワークの落とし穴

1. コードを書かないといけない
2. よく落ちるのでメンテナンスが手間
3. クロスブラウザ実行の闇

1. コードを書かないといけない●

技術知識が必要●できる人が限定され属人化●

コードの構築に時間がかかる2. よく落ちるのでメンテナンスが手間●

要素が表示される前にクリック●

謎の1500msのwait●classやidを変更して落ちる

3. クロスブラウザ実行の闇●

ブラウザごとのWebDriver設定の闇●Basic認証の闇●

各ブラウザの実装の違いの闇

本質的ではない戦いを強いられることにhttps://speakerdeck.com/tsuemura/kurosuburauzatesutofalsean-to
an-toanAutifyが落とし穴を解決

1.

コードを書かないといけない→ No codeで素早く誰でも自動化
2.

よく落ちるのでメンテナンスが手間→ AIがメンテナンス
3.

クロスブラウザ実行の闇→ クラウド上の豊富なブラウザと実機

06.
DevOps Testingここまでの話

テストのボトルネックを解消し、テストフェーズを最適化

Continuous Testing in DevOps

より素早く継続的にユーザーに価値を届け

Test

Test
Test

るには、あらゆるフェーズでテストを行う必要がある→ テストフェーズがなくなり常にテストし続ける

Test

Test

Test

各フェーズでのテスト自動化

要件定義

設計

実装

テストデプロイ/運用- BDD/ATDD- TDD- 形式手法/モデル
駆動テスト- コードレビュー- 新機能のE2E自動化- コードリポジトリと CIの連携- リグレッション
テストの自動化- CI/CD連携- 本番環境での外形
監視- ケイオスエンジニ
アリング

07.
DevOps TestingにおけるAI

AIがDevOps Testingを支える-

深層強化学習でテストを生成-

スクリーンショットを賢く比較-

ログからテストを生成-

画像認識でメンテナンス

あらゆるフェーズでサポートを行うMachine Learning in Autify

Nauman Mustafa
Senior Machine Learning Engineer

08.
まとめ順番に進める

1.

まずはテストフェーズを最適化する

2.

あらゆるフェーズでテストを行う

3.

テストフェーズがなくなり、高速なリリースサイクルが実現できる顧客に素早く継続的に価値を届けるには●

リグレッションテストの工数削減●

人手ではできなかったテストも行う●

より本質的な業務に集中Enjoy testing

Enjoy testing!
“自動化する時間がないのは、自動化していないから”

デモリクエスト受付中 & 積極採用中

デモリクエスト受付中！
●

Autify for Web デモリクエスト受付中●

Autify for Mobile β登録受付中

https://autify.com/ja

https://autify.com/ja/mobile

積極採用中！(フルリモート）●

テスト自動化エンジニア●

バックエンドエンジニア●

フロントエンドエンジニア

●

マーケター

●

アカウントエクゼクティブ●

人事

https://autify.com/ja/careers

09.
Q&A

ご質問への回答
1.

2.

自動化導入で上手くいった事例で特に上手くいったことがあればどんな前提だったか伺いたいです。自動化のタイミングなどに制約などあれば併せて教えていただけると助かります。
Autifiyがうまく導入できた QAチームや組織、企業の特徴があったら教えて下さい。

先日のDevelopers Summit 2021での講演「ソフトウェアテスト自動化ジャーニー」にて詳しくお話しました。是非こちらの スライドをご覧ください。

ご質問への回答
Autify は顧客や導入先のサービスごとにどのような機能をどの程度カスタマイズしているのか，あるいは汎用的な機能を利用してもらっているのかを可能であれば伺えればと思います

カスタマイズは一切しておらず、汎用的な機能をご利用頂いています。カスタマイズのご要望を頂いたこと自体がほとんどなく、その必要性が今の所ないためです。

ご質問への回答

リリースを高速化するために自動化されたテストを捨てていくときの考え方やテクニックなどあれば伺いたいと思いました

仕様が大胆に変わった場合を除き、自動化されたテストを捨てる大きな理由はな
いと考えています。パフォーマンスの問題であれば状況に応じて実施するテストを絞ることもできますし、仕様や画面のちょっとした変更であれば、メンテナンスすることをオススメします。

ご質問への回答

後付けでUNIT TESTが機能するシチュエーションはどんな状況か、ご経験があればぜひ伺いたいです。

レガシーなアーキテクチャに対して後から Unit Testを書くことは、難しいケースが多いと考えています。一方最初からリーダブルかつメンテナブルなアーキテクチャになっていれば、現状 Unit Testが無くても既にテスタブルな構造になっていると言えるので、後からでも Unit Testを書いていくべきでしょう。

ご質問への回答
Autifyさんは「テスト自動化エンジニア」を採用されていますが「 QAエンジニア」は採用されていないのですね。ツールである Autify自身のテスト・ QAはどのように実施されていますか？

弊社では、テスト自動化スペシャリストの末村主導の元、 Autifyを使って自動化出来る部分は自動化し、そうでない部分は別の手段を使って自動化しています。
Autifyのテスト戦略は こちらやこちらの資料もご参考ください。