回答:
アルゴリズムの内容に基づいて、使用されているデータ構造/タイプ/構造を特定できます。次に、それらの(可能性のある)弱点を理解し、それらのケースで実行する実行計画を考え出そうとします。
たとえば、アルゴリズムは入力として文字列と整数を受け取り、文字列の文字の並べ替えを行います。
ここにあります:
いくつかの既知の特殊なケースを含む文字列:
既知の特別な場合の整数:
次の境界の場合に失敗する可能性のあるソートアルゴリズム:
次に、これらすべてのケースを取り上げ、それらがどのように重複するかを理解しようとする長いリストを作成します。例:
次に、それらのテストケースを作成します。
簡単な要約:境界ケースを知っている基本ブロックでアルゴリズムを分割し、それらを再構築して、グローバル境界ケースを作成します
エッジの状態を決定するアルゴリズムはないと思います。
例:バイトパラメータの場合、0、127、128、255、256、-1などの問題を引き起こす可能性のある数値をテストします。
「エッジ」には2つの意味があり、エッジケースに関しては両方が関連しています。エッジは、入力の小さな変化が出力の大きな変化につながる領域、または範囲の終わりのいずれかです。
したがって、アルゴリズムのエッジケースを識別するために、まず入力ドメインを調べます。そのエッジ値は、アルゴリズムのエッジケースにつながる可能性があります。
次に、出力ドメインを調べ、それらを作成する可能性のある入力値を振り返ります。これは一般的にアルゴリズムの問題ではありませんが、特定の出力ドメインにまたがる出力を生成するように設計されたアルゴリズムの問題を見つけるのに役立ちます。例えば、乱数ジェネレーターは、意図したすべての出力値を生成できるはずです。
最後に、アルゴリズムをチェックして、類似しているが異なる出力につながる入力ケースがあるかどうかを確認します。これらのエッジケースを見つけることは、ドメインと入力のペアの両方を含むため、最も困難です。