Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Breaking your system

Avatar for tsuemura tsuemura
March 19, 2026
7

Breaking your system

Avatar for tsuemura

tsuemura

March 19, 2026
Tweet

More Decks by tsuemura

Transcript

  1. 3

  2. Known-Knowns 知っている・分かっている Known-Unknowns 知っているが分からない Unknown-Knowns 分かっていると知らない Unknown-Unknowns 分からないことすら知らない 例ベースの テストケース

    UI操作で壊す 開発者ツールで 壊す データを壊す ミューテーション テスト 検証 バグ分析 フォールト インジェクション カオス エンジニアリング 12
  3. 面白いが多分壊さない チャットUIとかだと「顔文字が入力できない」がクリティカルになるかもね ヽ༼ຈل͜ຈ༽ノ ヽ༼ຈل͜ຈ༽ノ (。◕ ∀ ◕。) `ィ(´∀`∩ __ロ(,_,*) ・( ̄∀ ̄)・:*:

    ゚・✿ヾ╲(。◕ ‿◕。)╱✿・゚ ,。・:*:・゜’( ☻ ω ☻ )。・:*:・゜’ (╯°□°)╯︵ ┻━┻) (ノಥ益ಥ)ノ ┻━┻ ┬─┬ノ( º _ ºノ) ( ͡ ° ͜ ʖ ͡ °) ¯\_(ツ)_/¯ 18
  4. 面白いが多分壊さない Zalgo Text (Unicode結合文字で作った怖い文字列) 見た目が面白いが意外とあんまり壊れない Ṱ̺̺̕ o͞ ̷i̲̬͇̪͙ n̝̗͕ v̟̜̘̦͟

    o̶̙̰̠kè͚̮̺̪̹̱̤ ̖t̝͕̳̣̻̪͞ h̼͓̲̦̳̘̲ e͇̣̰̦̬͎ ̢̼̻̱̘ h͚͎͙̜̣̲ͅi̦̲̣̰̤ v̻͍ e̺̭̳̪̰ -m̢iͅn̖̺̞̲̯̰ d̵̼̟͙̩̼̘̳ ̞̥̱̳̭ r̛̗̘e͙p͠ r̼̞̻̭̗ e̺̠̣͟ s ̘ ͇ ̳ ͍ ̝ ͉ e͉̥̯̞̲͚̬͜ ǹ̬͎͎̟̖͇̤ t͍̬̤͓̼̭͘ͅi̪̱n͠ g̴͉ ͏͉ͅc̬̟h͡ a̫̻̯͘o̫̟̖͍̙̝͉ s̗̦̲.̨̹͈̣ ̡͓̞ͅ I̗̘̦͝ n ͇ ͇ ͙ v̮̫ok̲̫̙͈ i̖͙̭̹̠̞ n̡̻̮̣̺ g ̲ ͈ ͙ ̭ ͙ ̬ ͎ ̰t͔̦ h̞̲e̢̤ ͍̬̲͖ f̴̘͕̣ è͖ẹ̥̩l ͖ ͔ ͚ i͓͚̦͠ n͖͍̗͓̳̮ g͍ ̨o͚̪͡ f̘̣̬ ̖̘͖̟͙̮ c҉͔̫͖͓͇͖ͅ h̵̤̣͚͔ á̗̼͕ͅo̼̣̥s̱͈̺̖̦̻͢ .̛̖̞̠̫̰ ̗̺͖̹̯͓ Ṯ ̤ ͍ ̥ ͇ ͈ h̲́e͏͓̼̗̙̼̣͔ ͇̜̱̠͓͍ͅN͕͠ e̗̱z̘̝̜̺͙ p̤̺̹͍̯͚ e̠̻̠͜ r̨̤͍̺̖͔̖̖ d̠̟̭̬̝͟ i̦͖̩͓͔̤ a̠̗̬͉̙ n͚͜ ̻̞̰͚ͅh̵͉ i̳̞v̢͇ ḙ͎͟ -҉̭̩̼͔ m̤̭̫i͕͇̝̦ n̗͙ ḍ̟ ̯̲͕͞ ǫ̟̯̰̲͙̻̝ f ̪̰̰̗̖̭̘͘c̦͍̲̞͍̩̙ ḥ͚a̮͎̟̙͜ ơ̩̹͎ s̤.̝̝ ҉Z̡̖̜͖̰̣͉̜ a͖̰͙̬͡ l̲̫̳͍̩ g̡̟̼̱͚̞̬ͅo̗͜ .̟ ̦ H̬̤̗̤͝ e͜ ̜̥̝̻͍̟́w̕ h̖̯͓ o̝͙̖͎̱̮ ҉̺̙̞̟͈ W̷̼̭a̺̪͍ į͈͕̭͙̯̜ t̶̼̮s̘͙͖̕ ̠̫̠B̻͍͙͉̳ͅe̵h̵̬͇̫͙ i̹͓̳̳̮͎̫̕ n͟ d̴̪̜̖ ̰͉̩͇͙̲͞ͅT͖̼͓̪͢ h͏͓̮̻ e̬̝̟ͅ ̤̹̝W͙̞̝͔͇͝ͅa͏͓͔̹̼̣ l̴͔̰̤̟͔ ḽ̫.͕ Z̮̞̠͙͔ͅḀ̗̞͈̻̗ Ḷ͙͎̯̹̞͓ G̻O̭̗̮ 19
  5. Chrome Devtools F12 を押すと出てくるやつですね ネットワークスロットリング — 低速回線のシミュレーション リクエストのブロック — 特定API/リソースの読み込み停止

    レスポンスの改ざん — 500エラー、空配列、不正なJSON ストレージの操作 — Cookie/LocalStorageの削除・改ざん Consoleからの操作 — DOM操作、hidden値書き換え、API直叩き などなど 22
  6. 例えばこんな不具合を再現させられる 静かな失敗 — エラーなのにユーザーに通知されない リトライのハンドリング — 失敗したリクエストがリトライされデータが重複 機密情報の露出 — 認証バイパス

    — トークン無効でもAPIが応答 サーバーサイドのバリデーション不備 — フロントエンドのバリデーションが壊れ ていると不正データが通ってしまう ブラウザはとてつもなく優秀なテストベッド、活用していこう 25
  7. 29

  8. ミューテーションテストツール Stryker (JS/TS C# Scala) PITest (Java) mutmut (Python) 言語によってあったりなかったりする

    今ならバイブコーディングで自言語のやつを作ったりしてもいいかもね 30
  9. 余談: 食べチョクの例: 本番に近いデータでテストする ステージング環境には、本番と同等のデータが入っています。 リリース当初は、 ステージング環境と本番環境のデータは同期しておらず、テスト用のダミーデー タで動作確認を行っていました。 しかしダミーデータでの確認だと、 ダミーばかりが並んだサイトと本番環境では見た目や印象が違っていて、UI が最適なのか、操作しやすいのか、性能は問題ないか等の検証がしにくい

    本番環境でしか再現しない、データに依存したバグに気がつかない恐れがあ る という問題がありました。ステージングで動いたのに本番デプロイしたらエラー が発生した というリスクもできるかぎり下げたいものです。 そのため本番環境の データをステージングに同期し、テストに利用することにしました。 https://tech.tabechoku.com/entry/2018/11/29/113244 35
  10. クラウド環境での障害注入 AWS Fault Injection Service (FIS) — EC2停止、CPU/メモリストレス、ネットワー ク遮断 Azure

    Chaos Studio — Azureリソースへの障害注入 Gremlin — クラウド非依存の障害注入プラットフォーム 39