Slide 1

Slide 1 text

開発者目線からユーザ目線へ システム監視とソフトウェアテストが行き着く先 2021年4月10日 Developer eXperience Day Autify 松浦隼人

Slide 2

Slide 2 text

自己紹介 松浦 隼人 ● オーティファイ株式会社 CTO (2020年1月〜) ● Twitter : dblmkt ● 経歴 ○ インフラ何でも屋 ○ 某ブログサービスのインフラ担当 ○ テクニカルサポート ○ インフラ + Rails ○ CTO (イマココ) ● 趣味 ○ 翻訳

Slide 3

Slide 3 text

https://autify.com/ja

Slide 4

Slide 4 text

E2Eテストはハードルが高い? - Autifyを使えば E2Eテストはハードルが高い? - Autifyを使えば ● 手でやるのは工数がかかる ○ 自動化しましょう! ● シナリオ作る・書くの大変 ○ テストシナリオ作成が簡単 ● 実行するの大変 ○ 複数のブラウザでテスト実行 ● 作った後も大変 ○ AIの力でシナリオ修正を支援

Slide 5

Slide 5 text

今日話すこと ● DXの観点からのシステム監視とソフトウェアテスト ● システム監視の進歩 ● ソフトウェアテストの進歩 ● システム監視とソフトウェアテストの共通点 ● ユーザ目線でのDX

Slide 6

Slide 6 text

システム監視とテスト ● DX Criteria システムの評価項目 ○ システム07 システムモニタリング → 障害からの学びが大事、監視はそのための手段

Slide 7

Slide 7 text

システム監視とテスト ● DX Criteria システムの評価項目 ○ システム03 継続的インテグレーション → テストを書くこと自体は言わずもがな、自動化せよ

Slide 8

Slide 8 text

システム監視とテスト ● どちらも ○ システムの品質低下を素早く検知して改善に生かす仕組み ○ システム監視 ■ 主にインフラ的な観点から問題を検知 ○ テスト ■ 主にコードあるいはシステム全体の振る舞いの正しさを検証

Slide 9

Slide 9 text

システム監視 ● 目的 ○ コンポーネントの障害を検知し、必要に応じた対応を行う ● コンポーネントが正常に動いているか監視 ○ 比較的高頻度 ○ 比較的単純

Slide 10

Slide 10 text

システム監視 ● 監視すべきもの ○ 比較的低レイヤの監視を組み合わせ ○ OSの指標 ■ CPU使用率、メモリ使用率、ディスクIO、トラフィック ○ ミドルウェアの指標 ■ クエリ数、PINGコマンドへの応答

Slide 11

Slide 11 text

システム監視 ● グラフ化 ○ トレンドを見る

Slide 12

Slide 12 text

システム監視 ● アラート ○ 生死確認 ○ 閾値の設定

Slide 13

Slide 13 text

システム監視 ● 問題点 ○ 個別コンポーネントの問題(に見えるメトリクス)がシステム全体に及ぼす影響が明確 でない

Slide 14

Slide 14 text

システム監視 ● ユーザの視点に立ってみると ○ 個別コンポーネントの監視 ■ 意味がない場合も ● e.g. CPU使用率が高いがユーザへのレスポンスは十分高速

Slide 15

Slide 15 text

システム監視 ● トレンド ○ ❌ 個別コンポーネントの監視の積み上げ →システム全体の監視 ○ ⭕ システム全体の監視→個別コンポーネントの監視で補完

Slide 16

Slide 16 text

システム監視 ● Synthetics monitoring ○ 単一エンドポイントではなく 一連の流れ(トランザクション)を 監視する手法 ● ログインしてツイートできる 1. トップページを開く 2. ログインリンクをクリック 3. ユーザ名を入力 4. パスワードを入力 5. サインインボタンを押す 6. ツイートを入力 7. ツイートボタンを押す 8. ツイートが表示される

Slide 17

Slide 17 text

システム監視 個別コンポーネントの監視 システム全体の監視 = ユーザ目線からの監視

Slide 18

Slide 18 text

テスト ● 自動化易しい ○ 単体テスト ○ 結合テスト ○ システムテスト (Webシステムにおいては≒E2Eテスト) ● 自動化難しい

Slide 19

Slide 19 text

アジャイル開発におけるテスト ● 単体テスト ○ システムの内部品質を保証する ○ 自動化して当たり前 ■ 言語ごとに様々なテストフレームワーク ■ CI/CDとの結合

Slide 20

Slide 20 text

アジャイル開発におけるテスト ● システムテスト ○ ≒E2Eテスト ○ システムとしての品質を保証する

Slide 21

Slide 21 text

アジャイル開発におけるテスト ● E2Eテスト ○ 自動化が難しい ■ GUI上のユーザの挙動をプログラムで再現するという難しさ ■ ブラウザごと、デバイスごとに違う挙動 ● それ用のインフラを用意する必要性 ■ 自動化し辛いケースの多さ ● 必ずしもテスタビリティの高い仕組みにできない ○ 人海戦術的に行われてきた(行われている)

Slide 22

Slide 22 text

アジャイル開発におけるテスト ● E2Eテストの技術革新 ○ 多くの新しい技術・サービス ■ ソフトウェア ● Selenium, Cypress ■ SaaS ● Autify

Slide 23

Slide 23 text

アジャイル開発におけるテスト デモ

Slide 24

Slide 24 text

アジャイル開発におけるテスト ● E2Eテストの技術革新 ○ 開発者がやりやすい形でE2Eテストを通じてソフトウェアの品質を 高められるようになった ○ ユーザと同じ視点に近いテストが高頻度に ○ 単体テストと同じように、開発サイクルと同じリズムでテストが 行えるようになった ユーザ目線でのテストも当たり前に

Slide 25

Slide 25 text

監視とテスト ● 監視 ○ (ユーザから遠い)インフラコンポーネントの監視に加えて ■ ユーザに近いところからの監視へ ● テスト ○ (ユーザから遠い)単体テストのみならず ■ ユーザと同じ目線のテストも自動化・高頻度化できるように ○ (ユーザから遠い)リリース前のテストに加えて ■ リリース後の継続的なテストも どちらも同じく開発者目線で始まって「ユーザ に近いところ」にたどりついた

Slide 26

Slide 26 text

DXとユーザ目線 ● DX ○ 開発にまつわる環境を整えることで高速な仮説検証、品質向上ができる ■ 開発者目線になりがち ○ ユーザの視点で考えるとDXの当たり前は当たり前でないかもしれない

Slide 27

Slide 27 text

DXとユーザ目線 ● 例 : ステージング(あるいはQA)環境 ○ リリース前に動作確認・テストなどを行う環境 ○ ユーザがアクセスする環境とは違ったトラフィック、違ったデータ ■ コード起因のものは見つけやすいがインフラ起因のものは見つけにくい ● 急なアクセス増など

Slide 28

Slide 28 text

DXとユーザ目線 ● ステージング(あるいはQA)環境 ○ 代わりに本番環境を念入りにテスト・監視する? ○ ステージング(QA)環境ではわかりずらいことを本番で ■ カオスエンジニアリング

Slide 29

Slide 29 text

まとめ ● 監視・テストは基本中の基本 ○ どちらも開発者目線からユーザ目線に重点が移ってきた ● ユーザ目線でDXを考える ○ 当たり前にやってきたことも違うアプローチが可能かも

Slide 30

Slide 30 text

https://autify.com/ja/careers/