ソフトウェアテストの小ネタ 12/10担当のあさこです。
小ネタなので、すぐにできそうなところからご紹介♪
テスト対象のリスク度分析の一例を二つほど、ご紹介します。
ソースコードメトリクスを利用します。
ソースコードメトリクス
ソースコードメトリクスは、いろいろなツールで取得可能です。
その中から、一つ目のご紹介。
皆さんも使われている方も多いと思いますが、
サイクロマティック複雑度
を使用したテスト対象のリスク分析です。
すごく簡単。
一般的に、15を超えると保守性が低い傾向があるといわれており、バグが潜みやすい傾向にあるようです。
なので、以下のような策をとられるとよいかもしれません。
その際にはもちろん言うまでもありませんが、意味があって複雑度が高くなっているのか、それともコードを書いた人のスキルなのか、なども合わせて考慮する必要があります。
- 複雑度が高いコードのコードレビューにはスキルの高い人を割り当てる
- 複雑度を下げることができるように設計を見直す(リファクタリングをする)
- ヒートマップなどで、どの関数が複雑度が高いかをみて、IntegTestに厚みを持たせる
すぐにできることなので、参考になさっていただけると嬉しいです。
二つ目のご紹介。
以下のメトリクスを利用。
- Essential:単純な条件構造(単純な if-else, while, do-while など)を、単一のステートメントで置き換えた制御グラフにおいて計測した複雑度
- FanIn:関数に対する入力の数
- FanOut:関数に対する出力の数
これは、Understandというツール
ソースコード解析ツール Understand | ソフトウェア品質保証 | テクマトリックス株式会社
から取得することができます。
Essential、Fanin・Fanout(二つのメトリクスを掛け合わせた値)このふたつをx,y軸に取り、散布図を描きます。
このメトリクスのプロットの意味するところは、もう想像がつくと思いますが、関数が複雑なうえに入出力値まで多ければ・・・そうです。ご想像の通りです。。。
ということで、判断基準としては、
Essentialの値が10以上、Fanin・Fanoutが400以上で囲まれる範囲を高リスクゾーンとし、集中的にテストを行う。
ということを一つの事例として紹介させていただきます。
以下のスライドの15ページ目でも、ご紹介しています。
少しでもプロダクトの性質・特性を把握できれば、メトリクスの値と一緒に分析して品質を作りこんでいくことが楽になるかもしれません。
このサイトにも、ソースコードメトリクスを利用した分析の事例が掲載されています。
番外編
アーキテクチャメトリクス
このメトリクスを取得できるツールは、有償無償だと、私が知っているところでは以下のものがあります。
有償:Lattix (テクマトリックス社取り扱いソフトウエア)
無償:ccfinder(32ビット版しかないかも・・・)
取得できるメトリクスはかなりたくさんあります。
また別の機会に、このメトリクスを利用した事例をご紹介したいと思います。
Enjoy your Testing life♪