業務でアプリケーションプログラミングを行っている人で、データベースを使わない案件はまれでしょう。ほとんどがデータベースに顧客データを格納したり、マスターデータを引っ張ってきたりするはずです。 そんなデータベースとのやり取りで、SQL文を書いたが、それがほんとうに合っているのか?、単体テスト時にテストデータを毎回手動でデータベースに入れては、プログラムで引っ張ってきた値と等しいかをチェックするのはばかばかしい、データを更新してはみたが、ほんとうに更新されているのかを確認しないといけない、なんて作業はとてもめんどくさくて憂鬱な作業ですよね。 そんな時に威力を発揮するのが、DBUnitという、データベースに関係する単体テストを自動で行ってくれるツールです。 もちろん、どんなテストケースがあるのかは自分で書かなければいけませんが、意図しているデータや、更新されたはずのデータはすべて外部のXMLファ
Myersは「ソフトウェア・テストの技法」で自己診断テストの採点用チェックリストを示しています。このリストには「xxxのテストケースをもっているか」という13の項目と、「期待出力結果を書いているか」という項目の合計14項目が書かれています。13項目の中には3つの整数値の入力順序を変える(permutation)ものが含まれているので別々に数えると、Myersのチェックリストに合格するには最低22個のテストケースが必要になります。 では、Myersの三角形問題の正解のテストケース数は22個なのでしょうか? ソフトウェアテスト・ヒストリー(ソフトウェアテストPRESS Vol.8)のコラム「三角形問題の正解」で、米国のテスト・コンサルタントRoss Collardの"Exercise: Analyzing the Triangle Problem"を紹介しました。Collardは三角形問題のテ
「テストをすべきなのは知っているが,現実にはできない」という現場の状況をいかに打破するか,気鋭のソフト開発者とテスト技術者がパネル討論 Developers [Test] Summit 2008(デブサミTest) 「建前ではなく実際にテストを普及させるにはどうすればいいのか」。2008年4月23日,東京・九段で開催されたテストに特化したソフトウエア開発者向けカンファレンス「Developers [Test] Summit 2008(デブサミTest)」で「【徹底討論】テストなんていらない?!-テストを,どこまでやるべきか?」というパネル・ディスカッションが開催された。 司会を務めたのはタワーズ・クエスト プログラマ兼取締役社長であり,テスト駆動開発(TDD)の日本での第一人者である和田卓人氏。同氏に,オープンソース・プロジェクト「Seasar」のチーフコミッタであるひがやすを氏,テストの
エンタープライズシステムにおけるソフトウエアテストは、ますます難しくなっています。外部システムとの連携が増えたことで、テストそのものが大規模化・複雑化の一途を辿り、そこに短納期のプレッシャーも掛かります。 こうした環境下でソフトウエア品質とプロジェクト効率の向上のために、「テストツール」の導入・活用が効果をもたらすことを、日経SYSTEMSは誌面を通じて提言してきました。 この度、5月26日発行号で発表した「2011年開発支援ツール利用実態調査」の結果を踏まえ、品質向上、コスト削減、短納期実現のためにテストツール導入を検討する場として、Enterprise TEST Forum 2011の開催を決定いたしました。 Enterprise TEST Forum 2011では、開発責任者、プロダクト・マネージャー、IT現場のエンジニアたちを対象に、「なぜ、テストツールが必要なのか」を提言いたしま
JUnitより簡単なオープンソースの「TestNG」とは?:次世代テストフレームワークでテストを変える(1)(1/3 ページ) テスティングフレームワークといえば…… Javaエンジニアが「テスティングフレームワーク」という単語を聞いて、真っ先に連想するものは、「JUnit」でしょう。しかし、テスティングフレームワークはJUnitだけではありません。「TestNG」というテスティングフレームワークも海外では高く評価され、確固とした地位を築いています。例えば、JBoss SeamはTestNGをベースにした統合テストフレームワークを提供しています。 この連載ではTestNGのコンセプトから詳細な使い方まで解説し、開発プロジェクトにおいてTestNGを利用する際の助けとしていただくことが目的です。 連載第1回では、Javaエンジニアになじみ深いJUnitとTestNGを比較し、2つのフレームワ
TwitterでこんなTweetが流れた… エビデンスとしてNUnitのGUIのスクリーンショットと、対応するテストコードが含まれている部分のVSのスクリーンショットを取る作業が終りません・・・ UnitTestのエビデンスって…なに? 一般的にテストのエビデンスというと、次の2点を指す。 テスト手順を明らかにするもの(ex. テスト設計書、テスト仕様書、...) テスト結果の証拠(ex. 画面ハードコピー、DBスナップショット、...) UnitTestでは、これはこのように解釈できる。 テスト手順を明らかにするもの = テストコード テスト結果の証拠 = 今実行すればテストが全てグリーンになること これがなぜか理解されず、軋轢とストレスと大きな工数追加になっている現場がずいぶんある。 なぜUnitTestはいつまでも理解されないのだろう。 余談。これらのことは、Seleniumなどを使
Groovy has excellent support for Testing with Unit Testing (GroovyTestCase adds extra capabilities to TestCase from JUnit 3.8.2) and Mocking capabilities built right in. Currently, there are no special Groovy extensions for JUnit 4 but it's easy to use so long as you are using Groovy 1.5+ and Java 5+ (a requirement for annotations/Junit 4.x). Here are some examples. Make sure you are using at leas
DbUnit公式サイトのDbUnit - Getting StartedページにIn order to use Dbunit you are not required to extend the DBTestCase class. You can override the standard JUnit setUp() method and execute the desired operation on your database. Do something similar in teardown() if you need to perform clean-up.とあり、そのすぐ下にサンプルコードも書かれてるとおり、DbUnitの利用にDBTestCaseを継承する必要はない。ただ書かれているサンプルコードはちょっと面倒そう。DbUnitにはIDatabaseTesterというインタフェ
はじめまして。開発部じゃない加藤和良です。 最近、mixi では Buildbot をつかった継続的インテグレーションをはじめています。安定版の mixi のソースコードにコミットすると Buildbot がそれを検知し、自動的にテストが走るようになりました。 ここでの「テスト」は Test::Simple や prove(1) をつかった、Perl でかかれた開発者テストを指しています。mixi の開発者テストをとりまく環境は、ここ数年でかなり改善されました。今回はその歩みをふりかえりながら、テストの無いコードベースをどこからどうやって変えていったかという話をしたいと思います。 開発環境 はじめに、前提となる mixi の開発環境について説明します。mixi では複数人の開発者がひとつのマシンで作業を行います。それぞれの開発者は、あらかじめ割り当てられたポートで Apache を起動し、
こんにちは。パートナーサービス部の加藤和良です。 前回、mixi における開発者テスト について説明しました。だいぶ間があいてしまいましたが、今回は、そのテストを定期的に実行する 継続的インテグレーション の仕組みを紹介したいと思います。 テストが遅い 実は、mixi のテストは「遅い」という大きな問題を抱えています。 Micheal Feathers は『レガシーコード改善ガイド』のなかで、単体テストが高速に実行できることの重要性を解き「単体テスト」を厳しく定義します。 次に当てはまるものは単体テストではない。 データベースとやり取りする ネットワークを介した通信をする ファイルシステムにアクセスする 実行するために特別な環境設定を必要とする (環境設定ファイルの編集など) 上記に該当するテストが悪いというわけではない。多くの場合において、そのようなテストを書く価値はあり、しばしばテスト
jMockとは モックの振る舞い定義が、慣れると心地いいモックライブラリです。本家サイトは以下。 http://www.jmock.org/index.html jMock利用準備 クラスパスへ以下のjarを追加します。 jmock-2.5.1.jar hamcrest-core-1.1.jar hamcrest-library-1.1.jar jmock-junit4-2.5.1.jar 今回はJUnit4とcommons-langを使うので以下も追加 junit-4.7.jar commons-lang-2.4.jar テスト対象ソースの作成 Item クラスを以下のように作成します。equals()を実装しておきます。 public class Item { private Long id; private String name; public Item(Long id, Stri
Java, Cayenne, jMockjMockの使い方を,いまさらながら調べたのでメモ的に記録しておきます。 ORマッピング・フレームワークであるApache Cayenneでは,多くのORマッパと異なり,データオブジェクト(エンティティ)がインタフェースを使っていません。Cayenneはバイトコード・エンハンスとかを使用しない作りなので,継承関係を用いてデータオブジェクトの機能が提供されてます。で,このデータオブジェクトのテストを実行する際にモックを使いたいのだけど,インタフェースがないからどうしよう,という話がありました。 答えは簡単な話で,ほとんどのモック・ライブラリは実クラスのモック化をサポートしています。今回はjMockを使いました。easyMockでも同じようなことは可能でしょう。pom.xmlへのライブラリの追加次のライブラリをMavenのpom.xmlに追加します。 o
では実際にjMockを使ってみます。 メインコード メインクラスを Sample、外部インターフェイスを External とします。 public interface External { void someExternal(); } public class Sample { private External external; public void some() { System.out.println("some start"); external.someExternal(); System.out.println("some end"); } public void setExternal(External external) { this.external = external; } } 必要なjarファイルのダウンロード 今回使用するのはjMock2(JDK1.5以上版)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く