通常のブランチカバレッジでは、単純なif文をカバーするために2つのユニットテストが必要です。しかし、if (A && B)
のような束縛条件がある場合、制御フローグラフの観点からは、短絡が使用されている場合は追加の分岐があります。これは、3を与える循環的複雑度カウントと一致している(各論理演算子は、短絡の場合に決定ノードが作成されるので、1だけ複雑性を増加させるという規則を適用する)。しかし、私が知る限り、コードアナライザはそれらの分岐を考慮しません。 表現の部分的な評価から副作用が発生しないようにするためには、とにかくそれらをカバーする価値がありますか?短絡によるコードの分岐をコードカバレッジに考慮する必要がありますか?
3
A
答えて
3
これは、自然にコードを分析する目的によって異なります。
FAAは、短絡したオペレータのすべてのオペランド(Cのものを含む)を一般に推奨します(たとえば、DOT/FAA/AR-06/54「ソフトウェア検証ツール評価スタディ」、最終報告書、2007年6月、セクション4.2.5)三項演算子、ブール演算子)は、あなたのように決定として解釈されます。より高い設計保証レベル(特に壊滅的かつ危険な)については、関連する基準(DO178、DO254など)で満たされるべき目的は、より高いDALでの独立性を高めることで、すべての可能な決定をカバーする必要がある。
したがって、アプリケーションがより高いDALを必要とすると仮定すると、答えは通常yesになります。代わりに、分析やテストの目的を達成するためにそのようなカバレッジが必要でないという主張を支持するための特定の議論を構築し、評論家にその議論を受け入れるように説得することもできます。このような議論は、短絡のあらゆるインスタンスに対して構築する必要があるかもしれない。あなたはさまざまな方法でこれについて議論することができます
1
が、ことを私のために、実際:
if (a && b) { X=... }
は、(多くの場合のように定義)とまったく同じです:
if (a)
{ if (b) { X=... }
}
はのカバレッジへのあなたの答えを意味し、 & &演算子は、等価な定義の答えと同じでなければなりません。同様に||オペレーター。
関連する問題
- 1. ジョブショップのスケジューリング:どのソリューションを考慮する必要がありますか?
- 2. ドメインモデルの実装でUIプロジェクトタイプを考慮する必要がありますか?
- 3. Asp.netでの負荷分散、開発中に何を考慮する必要がありますか?
- 4. 要件に基づいてpom.xmlを分岐する必要があります
- 5. jmeterツールを使用する際に考慮する必要がある要因
- 6. POP3クライアントの開発にはどのようなRFCを考慮する必要がありますか?
- 7. SMTPクライアントの開発にはどのようなRFCを考慮する必要がありますか?
- 8. 大きなプロジェクト用のファームウェアを書く際に考慮する必要がある考慮事項
- 9. Amazon EC2インスタンスの測定パフォーマンスを追跡する際に、ライブマイグレーションを考慮する必要がありますか?
- 10. 1つのアイテムを考慮するパーミュテーションが別のものに先行する必要があります
- 11. ETagを計算する際にHTTP応答ヘッダーを考慮する必要がありますか?
- 12. php4セーフモードをオフにする - 何を考慮する必要がありますか?
- 13. Sudokuソルバーが遅い、先に制約を考慮する必要がある
- 14. SFINAEのオーバーロードについて考慮する必要があるルール
- 15. 単体テストを行う際に何を考慮する必要がありますか?
- 16. 分岐プロジェクトでバザーにパスワードを入力する必要はありません
- 17. 投稿カテゴリを考慮に入れてループを変更する必要があります
- 18. Mercurialでは分岐前にマスターブランチにコミットする必要がありますか? Mercurialのリポジトリと
- 19. これは、UMLクラス図のクラス、または型として考慮する必要がありますか?
- 20. 無条件分岐とコードカバレッジ
- 21. 統計的な呼び掛けの並列性を考慮する必要がありますか?
- 22. Amazon Storageに移行するにはどのような要素を考慮する必要がありますか?
- 23. 自分のappiumコードがwhatsappアカウントにあるすべての連絡先を開くように自動化する必要があります
- 24. クエリが実行に1分掛かり、応答時間を短縮する必要があります
- 25. 親エンティティと子エンティティを含むデータベースを設計する際には、どのような要素を考慮する必要がありますか?
- 26. 再帰呼び出しスタックを補助空間として考慮する必要がありますか?
- 27. なぜEdmonds-Karp Maximum Flowでバックエッジを考慮する必要がありますか?
- 28. テーブルを縦に分割する必要がありますか?
- 29. JavaScriptに「短絡」の評価がありますか?
- 30. GUIテストのコードカバレッジを測定する必要がありますか?
あなたが言うことは本当ですが、付随する 'else'があれば等価性についての推論はより複雑になります – Peter
それでもなお正確な等価性があり、簡単な定義が明確なサブケース。 –