タグ

2013年8月19日のブックマーク (3件)

  • 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?

    第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?:連載 C++開発者のための単体テスト入門(4/4 ページ) ■従来のテスト手法[2]:assertマクロの活用 ここまでprintf関数を使ったテスト(C++ですからprintf関数ではなく、「<iostream>ライブラリとcoutストリーム」を使うのをお勧めしますが)の手順を説明しましたが、この方法ではテスト対象の増加に伴ってテスト・ケースも次第に増えてきます。 そうなると、各テスト結果の検証に多くの時間を要することになります。printf関数(あるいはcoutストリーム)で出力しているのは、関数/メソッドが返した値そのものであり、それが正しいか否かを目視でチェックしているのですから、テスト・ケースが数百数千ともなると正直うんざりしますし、チェック・ミスも起こるでしょう。単に値を出力するだけではいずれ限界となるのです。 そこ

    第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
    urza358
    urza358 2013/08/19
  • C言語講座:NDEBUGマクロとassert( )

    サイトマップ / C言語講座>出入り口>総目次>目次:バグ対策>NDEBUGマクロとassert( ) NDEBUGマクロとassert( ) [整数の取り得る範囲]←このソース→[エラーメッセージ] /* assert( ) と abort( ) */ /* 今日は、assert( ) と abort( ) について学びます。 #include <assert.h> void assert(int expression) ; 例:assert(expression); 戻り値:なし assert( ) は、assert.h の中で、マクロとして宣言されています。assert( ) は与えられた条件が、成立しているか調べ、expression の値が0ならば、標準エラー出力( stderr )にメッセージを表示して、abort( ) を呼び出し、プログラムを異常終了させますexpressi

    urza358
    urza358 2013/08/19
  • アサーション

    [ C++で開発 ] アサーション プログラムの検証を行う際のツールの1つで、プログラム時の仮定が満たされないことを検出するための機構です。例えば、ある関数が引数に繰り返し回数を取るときに、設計上は1回以上100回以下を想定して実装していたとします。引数の型がsigned intであった場合、呼び出し側の誤りによって負の値や100を越えた値が渡されることがあります。引数の範囲をアサーションでチェックしていれば、誤りは即座に判明します。しかし、チェックがなければ誤りはずっと後の処理まで次々と伝播し、気がついたときにはとんでもない被害をもたらすかもしれません註1。 ANSI Cのassert アサーションは、ANSI C規格で定められています。簡単なサンプルを示します。 #include <stdio.h> #include <assert.h> void test_assert(int ti

    urza358
    urza358 2013/08/19