07

10

コードカバレッジ測定ツール TestCocoon の使い方 その2

2011.07.10(21:41)

TestCocoonの動作原理

ソースコード

#include <stdio.h>
#include <stdlib.h>
#include "sample1.h"

#define true 1
#define false 0
#define bool int

bool isOdd(int num)
{
if (num % 2 == 0) {
return true;
} else {
return false;
}
printf("isOdd is called \n");
return false;
}

int main(int argc,char** argv)
{
int num = 2;
bool ret = isOdd(num);
printf("num,result = %d,%d \n",num,ret);
return 0;
}


があるとき、これにコードを追加して、以下のようなソースを作り出す。


#include <stdio.h>
#include <stdlib.h>
#include "sample1.h"

#define true 1
#define false 0
#define bool int

char inst[4];

bool isOdd(int num)
{
if (num % 2 == 0) {
inst[0]=1;
return true;
} else {
inst[1]=1;
return false;
}
printf("isOdd is called \n");
inst[2]=1;
return false;
}

int main(int argc,char** argv)
{
int num = 2;
bool ret = isOdd(num);
printf("num,result = %d,%d \n",num,ret);
inst[3] = 1;
return 0;
}


これをコンパイル、実行して、inst[x]の値を後から調べて、通ったか通っていないかを判断し、CoverageBrowserで表示するわけである。

なので、それくらいにはソースコードサイズが大きくなり、実行時間も少し長くかかることになる。また、通ったかどうかがわかるだけであって、どういう経路で通ってそこまできたかまでは調べられない。


if (cond1) {
state11;
} else {
state12;
}
if (cond2) {
state21;
} else {
state22;
}
if (cond3) {
state31;
} else {
state32;
}

この例では、(2x2x2)通り実行すれば100%になるのではなく、(2+2+2)通り実行すれば100%になる。

その3では、カバレッジの種類について説明する。

コメントの投稿

非公開コメント

プロフィール

島敏博

Shima Toshihiro 島敏博
信州アルプスハイランド在住。HaskellとElixirが好き。組み込みソフトウェアアーキテクト、C++プログラマ、山歩き、美術館巡り、和食食べ歩き、日本赤十字社救急法指導員、インデックス投資、クラシック音楽、SESSAME会員、状態マシン設計、モデル駆動開発、ソフトウェアプロダクトライン、Rubyist、実践ビジネス英語

■ ツイッター
http://twitter.com/saltheads
■ Facebook
http://www.facebook.com/saltheads
■ Qiita
http://qiita.com/saltheads

印刷する場合は、ブラウザの印刷メニューではなく、このページの上から3cmくらいの青いところにある、「印刷」を押してみてください。少しうまく印刷できます。まだ完全ではないのですが、これで勘弁してください。


カテゴリ
最新記事
月別アーカイブ
最新コメント
検索フォーム
リンク
sessame
RSSリンクの表示