InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

.NET向けPex自動化調査テスト

作者 Al Tenhundfeld , 翻訳者 編集部 投稿日 2008年7月17日

セクション
デベロップメント
トピック
ユニットテスト ,
.NET
タグ
MbUnit ,
MSTest ,
TDD ,
xUnit.Net

Pex(リンク)はMicrosoft Research提供によるホワイトボックステスト生成ツールである。特定のメソッド内で各実行パスのテストケースを別々に手書きするのではなく、デベロッパは1つのパラメータ化されたテストメソッドを記述することができる。Pexはそれを使用し、標準MS Testユニットの一式を生成し、ターゲットメソッド内でパスを実行する。Pexは命令ごとに.NETコードを分析し、コードが実行しているアクションを 解釈し、「完全に自動的な方法で、Pexは関連のあるテスト入力を計算する。テスト入力は、コードのコーナーケースをトリガーする」。

手書きによるパラメータ化されたユニットテストを与えられると、Pexはコードを分析し、自動的に関連のあるテスト入力を判別する。結果はコードカバレッジが高い、従来のユニットテストスイートである。また、Pexはプログラマに対してバグの修正方法を提案している。

Pexはメソッドの意図された振る舞いを定義したり、カバーするユニットテストを書き出すというデベロッパの必要性を少なくするものではなく、APIや機能性が不可欠なユースケースやユーザストーリーの要求を満たすことを確実にしている。しかしながら、Pexはテストが実装コードを適切にカバーする(リンク)ことを 保証するための、別の手段として使用することができる。この自動化された調査テストは、メソッドで意図されていない振る舞いやエラーを特定するのに、特に便利である。

ほとんどの生成ツールと同様に、Pexは特定の規則で使用されたときに、最もその機能を発揮する。メソッドを短く、テスト可能な状態に維持することは、 TDDの設計原則であり、この原則はPex生成のテストをさらに理解しやすくする。またPexはこの設計目標を達成する上で助けとなり得る。たとえば、 Pexが大量の複雑なメソッドのテストを生成する場合、メソッドはリファクタリングの候補になる場合がある。またメソッドがカスタムオブジェクトではなく パラメーターとしてプリミティブを持っている場合に、最も良く機能する。

デフォルトで、PexはVisual Studio 2008およびMSTestを統合するが、Pexの拡張機能はダウンロードしNUnit、MbUnitまたはxUnit.Netをサポートすることができる(リンク)。Pexは、Extended Reflection管理プロファイリングAPI(リンク)上にビルドし、モニタリングアプリケーションの統合を促進する。

現在PexはMicrosoft Research提供による試作であり、Microsoftのサポート対象製品ではない。ユニットテストを記述することを主な目的としてPexを使用すべ きではない。しかしその自動化されたテスト生成は、効率的にエッジケースをカバーするのに役立つ。

原文はこちらです:http://www.infoq.com/news/2008/07/introduction-lean-thinking

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。