開発者目線からユーザ目線へ〜システム監視とソフトウェアテストが行き着く先 Developer eXperience Day 2021 https://dxd2021.cto-a.org/program/time-table/e-6
開発者目線からユーザ目線へシステム監視とソフトウェアテストが行き着く先2021年4月10日 Developer eXperience DayAutify 松浦隼人
View Slide
自己紹介松浦 隼人● オーティファイ株式会社 CTO (2020年1月〜)● Twitter : dblmkt● 経歴○ インフラ何でも屋○ 某ブログサービスのインフラ担当○ テクニカルサポート○ インフラ + Rails○ CTO (イマココ)● 趣味○ 翻訳
https://autify.com/ja
E2Eテストはハードルが高い? - Autifyを使えばE2Eテストはハードルが高い? - Autifyを使えば● 手でやるのは工数がかかる○ 自動化しましょう!● シナリオ作る・書くの大変○ テストシナリオ作成が簡単● 実行するの大変○ 複数のブラウザでテスト実行● 作った後も大変○ AIの力でシナリオ修正を支援
今日話すこと● DXの観点からのシステム監視とソフトウェアテスト● システム監視の進歩● ソフトウェアテストの進歩● システム監視とソフトウェアテストの共通点● ユーザ目線でのDX
システム監視とテスト● DX Criteria システムの評価項目○ システム07 システムモニタリング→ 障害からの学びが大事、監視はそのための手段
システム監視とテスト● DX Criteria システムの評価項目○ システム03 継続的インテグレーション→ テストを書くこと自体は言わずもがな、自動化せよ
システム監視とテスト● どちらも○ システムの品質低下を素早く検知して改善に生かす仕組み○ システム監視■ 主にインフラ的な観点から問題を検知○ テスト■ 主にコードあるいはシステム全体の振る舞いの正しさを検証
システム監視● 目的○ コンポーネントの障害を検知し、必要に応じた対応を行う● コンポーネントが正常に動いているか監視○ 比較的高頻度○ 比較的単純
システム監視● 監視すべきもの○ 比較的低レイヤの監視を組み合わせ○ OSの指標■ CPU使用率、メモリ使用率、ディスクIO、トラフィック○ ミドルウェアの指標■ クエリ数、PINGコマンドへの応答
システム監視● グラフ化○ トレンドを見る
システム監視● アラート○ 生死確認○ 閾値の設定
システム監視● 問題点○ 個別コンポーネントの問題(に見えるメトリクス)がシステム全体に及ぼす影響が明確でない
システム監視● ユーザの視点に立ってみると○ 個別コンポーネントの監視■ 意味がない場合も● e.g. CPU使用率が高いがユーザへのレスポンスは十分高速
システム監視● トレンド○ ❌ 個別コンポーネントの監視の積み上げ→システム全体の監視○ ⭕ システム全体の監視→個別コンポーネントの監視で補完
システム監視● Synthetics monitoring○ 単一エンドポイントではなく一連の流れ(トランザクション)を監視する手法● ログインしてツイートできる1. トップページを開く2. ログインリンクをクリック3. ユーザ名を入力4. パスワードを入力5. サインインボタンを押す6. ツイートを入力7. ツイートボタンを押す8. ツイートが表示される
システム監視個別コンポーネントの監視システム全体の監視= ユーザ目線からの監視
テスト● 自動化易しい○ 単体テスト○ 結合テスト○ システムテスト (Webシステムにおいては≒E2Eテスト)● 自動化難しい
アジャイル開発におけるテスト● 単体テスト○ システムの内部品質を保証する○ 自動化して当たり前■ 言語ごとに様々なテストフレームワーク■ CI/CDとの結合
アジャイル開発におけるテスト● システムテスト○ ≒E2Eテスト○ システムとしての品質を保証する
アジャイル開発におけるテスト● E2Eテスト○ 自動化が難しい■ GUI上のユーザの挙動をプログラムで再現するという難しさ■ ブラウザごと、デバイスごとに違う挙動● それ用のインフラを用意する必要性■ 自動化し辛いケースの多さ● 必ずしもテスタビリティの高い仕組みにできない○ 人海戦術的に行われてきた(行われている)
アジャイル開発におけるテスト● E2Eテストの技術革新○ 多くの新しい技術・サービス■ ソフトウェア● Selenium, Cypress■ SaaS● Autify
アジャイル開発におけるテストデモ
アジャイル開発におけるテスト● E2Eテストの技術革新○ 開発者がやりやすい形でE2Eテストを通じてソフトウェアの品質を高められるようになった○ ユーザと同じ視点に近いテストが高頻度に○ 単体テストと同じように、開発サイクルと同じリズムでテストが行えるようになったユーザ目線でのテストも当たり前に
監視とテスト● 監視○ (ユーザから遠い)インフラコンポーネントの監視に加えて■ ユーザに近いところからの監視へ● テスト○ (ユーザから遠い)単体テストのみならず■ ユーザと同じ目線のテストも自動化・高頻度化できるように○ (ユーザから遠い)リリース前のテストに加えて■ リリース後の継続的なテストもどちらも同じく開発者目線で始まって「ユーザに近いところ」にたどりついた
DXとユーザ目線● DX○ 開発にまつわる環境を整えることで高速な仮説検証、品質向上ができる■ 開発者目線になりがち○ ユーザの視点で考えるとDXの当たり前は当たり前でないかもしれない
DXとユーザ目線● 例 : ステージング(あるいはQA)環境○ リリース前に動作確認・テストなどを行う環境○ ユーザがアクセスする環境とは違ったトラフィック、違ったデータ■ コード起因のものは見つけやすいがインフラ起因のものは見つけにくい● 急なアクセス増など
DXとユーザ目線● ステージング(あるいはQA)環境○ 代わりに本番環境を念入りにテスト・監視する?○ ステージング(QA)環境ではわかりずらいことを本番で■ カオスエンジニアリング
まとめ● 監視・テストは基本中の基本○ どちらも開発者目線からユーザ目線に重点が移ってきた● ユーザ目線でDXを考える○ 当たり前にやってきたことも違うアプローチが可能かも
https://autify.com/ja/careers/