goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

開発の初めから順番に書いていってみる その82:単体テスト(7)テストの実施

2007-08-28 19:03:12 | 開発ネタ

シリーズ「開発の初めから順番に書いていってみる」の続きです。

 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 (バックナンバーは、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm 最近更新しました)。

 前回で、ここの順番で言う「3.ドライバ、スタブ、テストデータの作成」が終わりましたので、今回は次の、「4.実際にテストする」です。




■単体テストの実施(1)デバッグモードで目視

 単体テストは、ホワイトボックステストであるとすると、プログラムの分岐あるいは命令を通ったか、をしらべることになります。
 これは、デバッグモードで実行して、デバッガで1行1行、確認しながら行えば、まあ、できます。

 しかし、テストの場合、本当に、テスト項目を実施した、今回の場合、本当にそこを通ったということを証明するもの=エビデンスが必要です。
 画面コピーをとる・・・というのも、大変です。
 どうしましょう。




■単体テストの実施(2)ログを入れる

 ということで、エビデンスまでとるとなると、ログを入れるということになります。
 ログを分岐点にいれて実行、ログを取得すれば、ログから、通ったか通らないかわかるので、エビデンスとすることができます。

 ただし、アスペクト指向でもない限り、プログラムを作り終わったあとに(テストするときに)ログを入れるというのは、プログラムを直さないと出来ないわけで・・・

 っていうわけで、ログをいれてエビデンスとする場合には、コーディング規約で、ログをいれるところをきめて、プログラム作成中に、ログを入れておくのが、のぞましいです。




■単体テストの実施(3)どっちもめんどうなので。。

 でも、どっちにしろ、めんどうです。
 JUnitでは、モジュール内はブラックボックスとして、入力値を変化させ、その出力結果をログに残すことにより、単体テストとしています。
 これが、単体テストか?ホワイトボックスこそが、単体テストではないのか・・
 という意見もあるかと思いますが。。。




■結果とエビデンスをのこす

 で、結果に関しては、記入するところがあるのでそこに記入し、必要なエビデンスをのこします。




というように実施するわけです。
で、うまくいけばこれでおしまいなのですが、たいていは巧くいきません。
バグが、でます。
次回はそのバグについてです。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

台湾エイサー、米ゲートウェイを買収

2007-08-28 13:17:46 | Weblog

きょうのオープニングベルでもやってたけど
ここのニュース
台湾エイサー、米ゲートウェイを買収
http://www.nikkei.co.jp/news/kaigai/20070828AT2M2701T27082007.html

によると(以下斜体は上記サイトより引用)


台湾のパソコン最大手、宏碁(エイサー)は27日、米同業大手のゲートウェイを買収すると発表した。7億1000万ドル(約825億円)でゲートウェイを全額出資子会社にする。宏碁は買収により中国レノボ・グループを抜き、世界のパソコン市場でヒューレット・パッカード(HP)、デルの米国勢に次ぐシェア3位に浮上する。


ほー。。
で、パソコンは安くなるのかなあ(^^)?


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VC++で実行時、DLLがないといわれ、スタティックにしたら、エラー。。。

2007-08-28 11:34:07 | Weblog

VC++で作ってて、実行ファイルを実行してもらったら、
「なんだかDLLが、ありません」みたいなエラーが出て、立ち上がらない
との話。

あ、そっか、共有DLLを使うって言う設定にしてたっけ(^^;)
ということで、

(プロジェクトのプロパティダイアログ)

こんなふうに、スタティックに変えてみたら

今度は、リビルトのリンクで

nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に libcpmt.lib(newop.obj) で定義されています。
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) は既に libcpmt.lib(newaop.obj) で定義されています。


というエラーで、実行ファイルが出来ない(>_<!)

こまったあ・・

と思ったら。。。

こんなブログを発見
[技術情報][VC] MFC プロジェクトに C ソースコードを追加すると LNK4006 ワーニングになることがある
http://www.users.gr.jp/blogs/hidori/archive/2005/02/14/8990.aspx


おお、まさにこれじゃ・・
で、そのブログによると(以下斜体は上記ブログより引用)

リンカオプションの「特定のライブラリを無視」に "Nafxcw.lib Libcmt.lib" を指定
追加オプションの「追加の依存ファイル」に "Nafxcw.lib Libcmt.lib" を指定


つまり、

(プロジェクトのプロパティダイアログ)
こうするってことですね・・

やってみると・・・

ほんとーだあー(@_@!)
エラーがなくなった。。。
実行ファイルが出来た・・めでたしめでたし



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする