Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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/