ぼうメモ帳

2004-04-01 ネタはない

マルチスレッドプログラミングにおける単体テスト

| マルチスレッドプログラミングにおける単体テストを含むブックマーク

研究用に開発しているグラフシミュレータは、各ノードがマルチスレッドで動作します(だから、機能シミュレーションしかできず、時間を正確に扱う必要があるシミュレーションはできない。サイクルアキュレートモデルみたいなもの)。で、現在マルチスレッドにおいて、どうすれば容易にテスト(主に単体テスト)が行えるか考えています。

以下、URLメモです。

  • Multithreaded Tests with JUnit

http://today.java.net/pub/a/today/2003/08/06/multithreadedTests.html

  • Thread Debugger

http://www.borland.co.jp/optimizeit/opt4.2/thread_debug.html

  • GrobUtils

http://groboutils.sourceforge.net/codecoverage/index.html

  • Jlint

http://artho.com/jlint/download.shtml

http://www.willowriver.net/products/download_jlint.php

私が行いたいテストは、二つのスレッドが1つのリソースアクセスするとき、スレッドがいかなる動きをしても、リソースはある定められた状態にあるというものです。二つのスレッドで安全性を証明できれば、あとは数学帰納法を用いて、複数のスレッドでも安全であると証明できると考えています。ですから、時相論理を用いた形式的検証を行うことができれば一番いいのですのが、そこまで手の込んだことはしたくないんですよね。

本日の進捗

| 本日の進捗を含むブックマーク

単体テストモジュールを書いてテストを実行しても、本体の方にバグが存在しない(発見できない)という罠。これは、テストプログラムの書き方が悪いのか、本体の方が十分に丁寧に書かれているのでバグが存在しないのか、どちらかなのかは不明。後者であることを切に願う。

ただ、安心して次に進めるのがすばらしい。実装の半分以上の時間をテストプログラムの開発に費やしてる気がするが、それはこの際忘れる。単体テストを食わず嫌いしていた今までの自分が馬鹿みたいだ。オールグリーンになった瞬間の快感ときたら、やめられない。

トラックバック - http://d.hatena.ne.jp/susumu/20040401
263408
Connection: close