タグ

ブックマーク / goyoki.hatenablog.com (4)

  • clang/gccに組み込まれたAddressSanitizer/LeakSanitizerでメモリエラーを捕捉する - 千里霧中

    C/C++でのユニットテストによるメモリリーク検出 - 千里霧中の補足。 メモリエラーの検出方法についてだけれど、最近のclangやgccだと、AddressSanitizerという動的解析ツールが組み込まれており、それを活用できる。 使用する場合はコンパイラオプション「-fsanitize=address」「-fsanitize=leak」等を指定する。 題材 例えば以下のコードを対象にする。 //main.c #include <stdio.h> #include <stdlib.h> void hoge(void) { int *a_buff = (int *)malloc(5 * sizeof(int)); a_buff[10] = 8; } int main(void) { printf("test\n"); hoge(); return 0; } これを普通にコンパイルして実行

    clang/gccに組み込まれたAddressSanitizer/LeakSanitizerでメモリエラーを捕捉する - 千里霧中
    iww
    iww 2018/11/08
    コンパイル時に混ぜ込むと、実行時にリーク検知してくれる
  • Hogeや山田太郎といったメタ構文変数の改善 - 千里霧中

    Self-Describing Value プログラミングやテスト実装ではしばしばhogeや山田太郎、山田花子、といったメタ構文変数が使用されます。ただ「Literal value(xUnitTestPatterns読書会)」でも触れましたが、こうしたメタ構文変数は一工夫で可読性や保守性をより向上できる場合があります。 例えば以下のテストコードを見てみます。 UserList userList; userList.add("山田太郎");//名前はダミー EXPECT_EQ(1, userList.size()); 上記の「"山田太郎"」は、userListのサイズを1にするためのダミーで、どのような値をとっても構わないものとします。こうした場合は、以下のように意味や目的を値そのもので表現するとわかりやすくなることがあります。 UserList userList; userList.add

    Hogeや山田太郎といったメタ構文変数の改善 - 千里霧中
    iww
    iww 2013/06/10
    安易にhoge使う前にちょっと考えよう という話
  • リファクタリングのための回帰テストの書き方 - 千里霧中

    リファクタリングで定番のテスト活用方法として、変更前と変更後で挙動が変わってないことをテストコードで検証する、というものがある。違う用例で使われることもあるが、ここではそのテストを回帰テストと定義する。 そうしたリファクタリングでの回帰テストとしては、大きく以下の2パターンが挙げられる。 新しいコードの出力と古いコードの出力を比較するテストを書く。 満たすべき仕様を検証するテストを書く。そして古いコードと新しいコード両方がそれをパスすることを確認する。 今回は前者のテストをどう作っていくか、について扱っていきたいと思う。 簡単な場合 新しいコードの出力と、古いコードの出力を比較するテストというのは、満たすべき仕様を検証するテストよりも、一般的に実装が容易であることが多い。というのも、そのアプローチでは、テスト対象の仕様をよく考えなくとも、カバレッジなどを基準に網羅性を高めることで必要なテス

    リファクタリングのための回帰テストの書き方 - 千里霧中
    iww
    iww 2012/09/24
    怪奇テスト
  • 状態遷移のテスト設計について出題&解説 - 千里霧中

    今月初め、WACATEつながりの、課題に対して参加者が各々の方法でテスト設計するという趣旨のハンズオン勉強会に参加。 いい機会だったので、今回は以下の状態遷移のテストについて出題し、解説させていただいた。 ●出題課題 http://infog.0ch.biz/download/jissen_swtest_1__work.pdf ●解説 http://infog.0ch.biz/download/jissen_swtest_1__ans.pdf テスト設計技法の威力 色々勉強になる機会だったけれど、今回は特に原因結果グラフのメリットを手で体感できたのが良かった。 というのも、今回他の参加者の方が以下のようなテストケース設計課題を出題された。 会員向けにメールボックスサービスを提供している オプションとして「メール転送機能」があり、以下の設定ができる 転送先アドレス(TEXT): 自アドレスは

    状態遷移のテスト設計について出題&解説 - 千里霧中
  • 1