13章コードのテスト

執筆:Phil Ames、Franjo Ivančić

協力:Vera Haas、Jen Barnason

 信頼性の高いシステムは、障害に対して弾力性があり、文書化されたサービスレベル目標(service level objective = SLO)を満たすもので、そこにはおそらくセキュリティの保証も含まれるでしょう。頑健なソフトウェアにするためのテストと解析は、障害リスクの軽減に役立ち、プロジェクトの実装段階で特に重視する必要があります。

 本章では、ユニットテストと結合テストを含め、テストに対するさまざまなアプローチを検討します。また、静的および動的なプログラム解析やファズテストなど、セキュリティについて深く掘り下げる追加のトピックも取り上げますが、これらは遭遇する入力に対するソフトウェアの弾力性を強化するのに役立ちます。

 エンジニアがどれほど注意深くソフトウェアを開発しているとしても、ミスをしたりエッジケースを見落としたりすることは避けられません。入力の予期しない組み合わせは、データの破損を招いたり、『SRE サイトリライアビリティエンジニアリング』の「22章 カスケード障害への対応」で言及されている「死のクエリ」の例のような、可用性の問題を発生させたりするかもしれません。コーディングエラーは、バッファオーバーフローやクロスサイトスクリプティング(XSS)脆弱性などのセキュリティ問題を引き起こす可能性があります。簡単に言えば、現実の世界でソフトウェアには、さまざまな形で障害が起こりやすいものです。

 本章で検討する手法は、ソフトウェア開発の異なる段階やコンテキストで使用され、費用対効果のプロファイルもさまざまです†1。例えば、ランダムなリクエストをシステムに送信する ...

Get セキュアで信頼性のあるシステム構築 ―Google SREが考える安全なシステムの設計、実装、保守 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.