Wizard In The Market
システムトレードの魔術師

*

高度なテスティングテクニック

公開日: : 最終更新日:2015/01/13 Ruby, Ruby ベストプラクティス

モックとスタブを使う

モック

モックオブジェクト (Mock Object) とは、ソフトウェアテスト時、特にテスト駆動開発、ビヘイビア駆動開発における代用の下位モジュールスタブの一種。スタブと比較して、検査対象のモジュールがその下位モジュールを正しく利用しているかどうかを検証するのに使われる。
http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%83%E3%82%AF%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88

スタブ

スタブ (stub) とは、複数のモジュールからなるコンピュータプログラムの検査(ソフトウェアテスト)時における下位モジュールの代用品のこと。元々の意味は、切り株のこと。
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%96

まとめ
  • モックとスタブは、適切なやり取りや動作を検証しつつ、テストから外部への依存関係をなくすのに使える
  • スタブは、ある機能を事前に用意された結果を返すように置き換えて、他のコードのテストを簡単にするために使われる
  • モックは、テストのために外部リソースの代わりになるオブジェクトを作るために使われる。モックオブジェクトには期待される応答が用意され、テストが実行された時には、その応答が実際になされたかどうかを検証する。これはmy_obj.should_receive(:foo).onceのようなものがあり、my_objで決してfooが呼び出されないなら、テストは失敗するということを意味する。これがモックとスタブの大きな違い。
  • 複雑な出力をテストするときには、あなたが生成する出力フォーマットをパースするツールを見つけて、その結果に対してテストを書くことが最善の方法だ
  • もしかなり労力をかけないと生成したデータをパースできないなら、期待される出力をファイルに格納しておき、必要に応じてそのファイルをテストに読み込ませて、diffユーティリティを使って期待される出力と実際の出力を比較することを検討しよう
  • Nokogiriは、たいていのXMLフォーマットに対してドキュメントをパースして簡単に検索できるようにする機能がある。
にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 67 follow us in feedly

関連記事

no image

Sakura VPS Ubuntu 12.04 に Ruby on rails と PHP、 メールサーバ構築までまとめてみる。 その3

postfixのインストール http://www.kazutoyo.com/ubuntu/?page_id=279

記事を読む

no image

test/unitを使おう

http://doc.ruby-lang.org/ja/1.9.2/library/test=2funit.html

記事を読む

no image

Array.eachでインデックス番号も一緒に欲しい時のeach_with_index

なんでこれがリファレンスに載ってないんだろうっていう便利な関数 each_with_index (Enumerable

記事を読む

no image

テスティングの基礎

焦点をしぼったテスト 例外をテストする assert_raises() で例外発生を確認assert_nothing

記事を読む

no image

Rubyでバイナリファイルをいじる

記事を読む

no image

assert集

全てのassertにおいて、失敗した場合は(指定した場合は)最後の引数の文字列をエラー時に表示する assert(te

記事を読む

no image

Rails3でGoogle用のsitemap xmlを作る

http://www.slowlydays.net/wordpress/?p=743

記事を読む

no image

Ruby puts に文字数の上限があるみたい

Rubyで長い文字列を扱う機会があって、急にputsに出力がなくなって、バグでもあるのかと不安になっていた。なんのこと

記事を読む

no image

CSVファイルをクォーテーションでくくる。

rubyでcsvを作る時にカラムをダブルクォートでくくったり、くくらなかったりhttp://kingyo-bachi.b

記事を読む

no image

メールサーバのリレー防止チェック

http://www.rbl.jp/svcheck.phpここ使えば、リレーとしてサーバが利用される可能性があるか調べ

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

JupyterでボタンからJavascriptを実行して追加のアウトプットをさせない方法

Javascriptを実行するとアウトプットセルの行が増える これがとても面倒だった。上の

まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ

タイトルはあまり気にしないでください。全然、Bokehで消耗する価値があるとは思っています。ただ

SQLAlchemy のマイグレーションライブラリ Alembic を使ってみる。

SQLAlchemyの作者が作ったデータベースマイグレーションツール。個人的には、SQLAlch

Avoiding the problem of connect to outside of LAN with L2TP/IPSec on Ubuntu 18.04.

とても困って、原因の特定に2日かかった。疲れた。確定申告したいのに。 The IPSEC tu

Wine 上の MT4から ZeroMQ を使って Linux の pyzmq の通信をさせる

こんにちは。キリンです。 最近、年に数度のMQLを書くときがきたのですが、Pythonに慣れま

→もっと見る

PAGE TOP ↑