エッジケースとは、極端な (最大または最小) 動作パラメータでのみ発生する問題または状況です。たとえば、ステレオ スピーカーは、他の極端な設定や条件がない場合でも、最大音量で再生すると音声が著しく歪むことがあります。
エッジ ケースは、予想される場合と予想外の場合があります。エンジニアリングでは、エッジ ケースを計画し、適切に対処することは重要なタスクですが、このタスクが見落とされたり、過小評価されたりすることがあります。
エッジケース[1]の一般的な原因は次のとおりです。
- 予測不可能なユーザー行動
- ユースケースの進化(例:ユーザーの行動は時間の経過とともに変化する可能性があります)
- 限定されたテスト範囲
- 製品の複雑さ(分散システムやマイクロサービスアーキテクチャなど)
- リソースの制限(処理能力、コンピュータのメモリ、コンピュータのストレージの制限など)
- その他の外的原因
エッジケースの基本的な例は次のとおりです。
- アプリ内の長いユーザー名がオーバーフローして正しく表示されない
- 予約システムがうるう日(2月29日)の予約を正しく処理しない
重大なエッジ ケースは、エンジニアリング中のオブジェクトの障害につながる可能性があります。設計段階では予見できなかった場合や、オブジェクトの通常の使用中に発生する可能性がないと思われていた場合もあります。このため、優れたエンジニアリング標準を形式化する試みには、エッジ ケースに関する情報が含まれることがよくあります。
ソフトウェアエンジニアリング
プログラミングにおいて、エッジケースとは、通常、コンピュータプログラムの背後にあるアルゴリズムで特別な処理を必要とする入力値に関係します。このような場合のコンピュータプログラムの動作を検証するための手段として、通常、ユニットテストが作成されます。ユニットテストは、アルゴリズム、関数、またはメソッドの境界条件をテストします。各「境界」の周りの一連のエッジケースを使用すると、エッジで正しく動作する場合は、他のすべての場所でも動作するはずであるという仮定を使用して、適切なカバレッジと信頼性を得ることができます。[2]
たとえば、2つの数を割る関数は、非常に大きい数と非常に小さい数の両方を使用してテストされる可能性があります。これは、関数が大きさのスペクトルの両端で機能する場合、中間でも正しく機能するはずだと想定しています。[3]
プログラマーは、単体テストでカバーされていないエッジケースに対処するために統合テストを作成することもあります。 [4]これらのテストは、システム全体をテストした場合にのみ発生するケースをカバーします。たとえば、単体テストでは関数が結果を正しく計算することを確認できますが、統合テストでは、この関数がデータベースまたは外部APIと統合されたときに適切に動作することを確認します。これらのテストは、分散システム、マイクロサービス、およびモノのインターネット(IoT)デバイスでのシステムの複雑さが増す中で特に重要です。特にマイクロサービスでは、統合テストがすべてのマイクロサービスのエンドポイントをカバーしない可能性があるため、テストが困難になり、エッジケースがカバーされません。[5]
エッジ ケースに関連するその他の種類のテストには、負荷テストやネガティブ/障害テストなどがあります。どちらの方法も、システムのテスト範囲を拡大し、予期しないエッジ ケースの可能性を減らすことを目的としています。
テスト駆動開発では、エッジ ケースはシステム要件によって決定され、コードを書く前にテストによって考慮されることがあります。このようなドキュメントは、利害関係者や他のチーム と話し合った後、製品要件ドキュメント内に組み込まれることがあります。
参照
参考文献
- ^ Beram, Shehab (2023-08-03). 「エッジケースとは何か?意味、ソフトウェア開発における例」LogRocketブログ。 2023年10月24日閲覧。
- ^ Zimmerman, Josh (2012). 「ユニットテスト」(PDF) .命令型計算の原則. cs.cmu.edu . 2014-01-16に取得。
- ^ Cho, Shinil (2018 年 10 月)、「フーリエ変換」、Microsoft EXCEL® を使用したフーリエ変換とその応用、IOP Publishing、doi :10.1088/978-1-64327-286-3ch2、ISBN 978-1-64327-286-3, S2CID 210754571 , 2022-02-17取得
- ^ Khorikov, Vladimir (2019).ユニットテスト: 原則、実践、パターン. Manning Publications. pp. 188–190. ISBN 978-1617296277。
- ^ Hossain, Md. Delowar; Sultana, Tangina; Akhter, Sharmen; Hossain, Md Imtiaz; Thu, Ngo Thien; Huynh, Luan NT; Lee, Ga-Won; Huh, Eui-Nam (2023-06-23). 「エッジコンピューティングにおけるマイクロサービスアプローチの役割:機会、課題、研究の方向性」 。ICT Express。doi : 10.1016 / j.icte.2023.06.006。ISSN 2405-9595。
