2015-01-01から1年間の記事一覧
Xegerというライブラリがある。 ある正規表現にマッチするような文字列を乱数によって生成してくれるものだ。 これは面白い。 xeger - A Java library for generating random text from regular expressions - Google Project Hosting ただプログラム中の正…
Theoriesランナーについて先日、私自身は使っていないことを書いたのだが、自分で作ってみると興味が出てくるものだ。 Haskellでいうquickcheckが念頭にあると、なんでこういう仕様でこういうものを作ろうとしたのかが分かる。ようだ。 quickcheckというのは…
コードのある場所でTreeMapをLinkedHashMapに変えてみた。 すると、 benchmark1_3$4 :(testcases, remainders, time(sec))=( 9, 0, 0.0) benchmark2_3$13 :(testcases, remainders, time(sec))=( 24, 0, 0.03) benchmark3_4$15_3$17_2$20 :(testcases, remai…
Builderがクラス化された生成子なら、それは本来メソッドの中で使い捨てにされるものだろう。 ならば、フィールドをprivateにする必要はあるのだろうか? メソッド間、クラス間で本当に受け渡ししないならばprivateでもpublicでもいいのだが、受け渡しをする…
@Suiteのついたテストクラスはまとめていろんなクラスにあるテストを実行する。このいろんなクラスというのはSuiteの「子」としてJUnitに扱われる。 @Suiteとアノテーションがつけられたクラスの中のあるメソッドをIntelliJのテスト結果画面から選択すると、…
これは、、、使えるぞ。
皆さん、JUnitのTheories runnerは使っていますか? 僕は使っていません。 可能な値の組み合わせをすべて<直積>でテストしようとするのでテストケース数が爆発してしまうのと、 一つのテストメソッドに対してそれらの組み合わせを一つのテストケースとして…
なんとかかんとか、0.5.5をリリースした。 発端は uehaj.hatenablog.com JCUnitが持っているプリミティブ用のデフォルト値を外部から取りやすいようにするというだけのことだったのだが、プラグインのインタフェースがあんまりよろしくないから変えないと、…
今回の話はレポートで組み合わせとか順列の列挙をするプログラムを作る課題をやってる学生さんには面白い話かもしれない。 JCUnitは内部的にcombinatoradix(旧称enumerator)と呼ばれる私が作ったライブラリを使っている。 github.com JCUnitは性質上、かなり…
こちらのエントリでご紹介いただいたときに「デフォルトで設定されている各型ごとの水準一覧を取る手段がない」という指摘も頂いた。 uehaj.hatenablog.com それ自体は、なんとかなりそうで、難しいものでもないのでこんなチケットを作った。 github.com で…
ダメだコイツ。解体しないと。 つうかLevelsProviderのインタフェース自体を見直さないと。
IPOはテストケース(Tuple)内の因子(Factor)の水準(Level)を一個ずつ、すべての可能な組み合わせが網羅するように決めていくアルゴリズム。生成されるテストスイートは縦方向(テストケース数)と横方向(因子数)を必要に応じて交互に増加させながら成長して…
TupleGeneratorを直接取り扱いたい人々が一定数いるように見受けられるので、そのためのクラスやメソッドを整理してみた。 TupleGenerator tg = new TupleGenerator.Builder().setFactors( new Factors.Builder() .add("OS", "Windows", "Linux") .add("Brow…
(早速機能拡張をしてるので、10/5現在の最新版は0.5.4です。 JCUnit 0.5.4リリース。 - jcunit's blog )今回の目玉は何といってもFSM(有限状態機械)のサポートだ。github.com ユーザがSUT(テスト対象ソフトウェア)を有限状態機械としてモデルすると、pai…
MVCで言うならVのようなソフトウェアのプレゼンテーションとかUIとかを担う層とも言える。 モデルとビューを分離するのはビューへの変更は頻繁に起こることから来ていて、そしてそれはユーザの選好に大きく依存するからなわけだ。するとアノテーションの体系…
前回のポストからずいぶん時間が経ってしまった。 FSMサポートについてのこれまでの設計を見直したいと思ったのと、他のことに興味を奪われていたためだ。間は開いてしまったもののもうすぐ前回の続きを書けると思う。
考えてみれば、ソフトウェアシステムというのは有限状態機械であり、ソフトウェアシステムの仕様を決めるとはその有限状態機械の仕様を決めることに他ならない。と、いうことは有限状態機械の仕様からテストを自動的に生成して、それを自動的に実施できるな…
さて昨日に引き続き、JCUnitによる有限状態機械のテストの書き方について。 テストメソッドの宣言 これはどうということもなくて public FlyingSpaghettiMonster sut = new FlyingSpaghettiMonster(); @Test public void test() throws Throwable { FSMUtils…
はじめに かれこれ三カ月くらい頑張って、有限状態機械(以下、FSM)をJCUnitを使ってテストする機能を作ってみた。 今回はひとまず0.4.20としてリリースした。MavenのCoordinateは以下のとおり。 <dependency> <groupId>com.github.dakusui</groupId> <artifactId>jcunit</artifactId> <version>0.4.20</version> </dependency> テストは十分ではない…