タグ

UnitTestに関するatsushifxのブックマーク (35)

  • GitHub - stackframe-projects/pgmock: In-memory Postgres for unit/E2E tests

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - stackframe-projects/pgmock: In-memory Postgres for unit/E2E tests
    atsushifx
    atsushifx 2024/04/08
    ユニットテスト用のPostgresモック
  • privateメソッドのテストって書かない方がいいんだっけ?

    PHPerKaigi 2024発表資料 https://fortee.jp/phperkaigi-2024/proposal/f23f927e-2ac8-498e-a047-6376831cbd07

    privateメソッドのテストって書かない方がいいんだっけ?
    atsushifx
    atsushifx 2024/03/10
    闇魔法に手をつけて闇堕ちした的な話。本来、privateメソッドはテストすべきではない粒度のものだが、できるようになったら、ついユニットテストして帰って大変になった。という話。
  • 静的型チェックがあったらテストはあまり書かなくて良いのか - $shibayu36->blog;

    昔に動的言語だとひたすらテストを書かないといけないけど、静的型チェックの仕組みがあればそんなにテストを書かなくてもいいよねみたいな話があった記憶がある。昔は結局どうなんだろうと思ってたのだけど、最近もそういう話を耳にして、やっぱりそんなことないだろうという気持ちになったのでメモ。ふと思いついただけなので正当性は分からない。 まずなぜそのような話になるのか考えたのだけど、「静的言語ならコンパイル時に型チェックをすることができるため安全性を高められる」という点からこういう話が上がってきているように思う。しかしよく考えてみると、静的型チェックという仕組みは、プログラムテキストとして正当であるかという点しか保証していない。つまり、特定の変数が必ずその型であるとか、特定のエンティティからのメソッド呼び出しが正しいか(メソッド名や引数など)とか、関数が返す型がかならず指定した型になるかとか、そのような

    静的型チェックがあったらテストはあまり書かなくて良いのか - $shibayu36->blog;
    atsushifx
    atsushifx 2016/07/15
    記事に書かれている通り、入出呂君おテストは必要。本気でそこのテストを減らしたいなら「DbC:契約による設計」を導入する必要があるだろう。蛇足として付け加えれば、仕様レベルのテストはまた別問題
  • テスト(コード)レビューの方針 書きなぐり版 - うさぎ組

    牛尾さんのブログをはてブったら、「じゃぁ、その手を見せろやゴルァ」と言われたので書きました。雑です。すみません。 元記事 「自動化対象のユニットテスト(単体テスト)の仕様書を書くことは完全なる無駄である」 Blogs - Live DevOps in Japan! - Site Home - TechNet Blogs 僕のコメント 「だいたい同じ意見だけど、これで単体テスト仕様書がいらない理由にはならないかなぁと思った。テストレビューの成長方法について書かれていないしなぁ。出来る人いない現場は諦めろってことかな?」 はてなブックマーク - kyon_mm のブックマーク - 2016年1月25日 牛尾さんのコメント「どっかに書いてありますか?もしあったら記事にはります。」 僕のコメント「書いていません!」 僕のコメント「書きました!」 僕の主張 記事は僕の実験結果(経過報告)であり、

    テスト(コード)レビューの方針 書きなぐり版 - うさぎ組
    atsushifx
    atsushifx 2016/01/25
    テストの捨て方か。以外と考えたことなかったし重要な視点かも。少なくとも2.の「テストを評価できる」技術力のありなしはめいっぱい同意する
  • 【速報】JUnit5 はこうなる!?【プロトタイプ】 | DevelopersIO

    渡辺です。 DevelopersIOでの100目のエントリーがJUnitネタとなりました。 自分がJUnit実践入門を執筆したのは2011年から2012年にかけてです(出版が2012年11月)。 それからJava8がリリースされていますが、JUnit4自体は大きな進化はしていませんでした。 昨日、JUnit Lambda Prototypeが公開されました。 まだプロトタイプということで、今後の変更は大きいかと思いますが、いよいよ次世代のJUnitの足音が聞こえてきた感じがします。 今回は、このドキュメントからJUnit Lambdaの概要と方針について速報をお送りしたいと思います。 なお、現在JUnitチームでは、このプロトタイプに対するフィードバックを募集しています。 ここはこうじゃないとかはてブコメントする前にTwitterGitHubでフィードバックを! JUnit Lambd

    【速報】JUnit5 はこうなる!?【プロトタイプ】 | DevelopersIO
    atsushifx
    atsushifx 2015/11/22
    ざっと見だけど、JUnit5自体はテスティングフレームワークという枠組みだけにして、matchなどの細々したことはいわゆるプラグインで解決という砲身みたい。これはこれで大英断だと思う
  • Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ

    2014年12月にRuby 2.2がリリースされる予定です1。 Ruby 2.2にはRuby 1.9.1のときに外されたtest-unitというテスティングフレームワークが再びバンドルされる予定です。Rubyのテスティングフレームワーク周りに詳しくない人にはよくわからない状況でしょう。そこで、Rubyのテスティングフレームワークの歴史を説明することで状況を整理します。 名称の整理 この説明の中ではたくさんのテスティングフレームワークが登場します。似たようなものもあるため、最初にテスティングフレームワークの名称を整理します。この説明の中で登場する名称は次の通りです。 RubyUnit Lapidary rubyunit Test::Unit test/unit test-unit miniunit minitest RSpec 違いがわかりますか?ざっくり説明すると次の通りです。 RubyU

    Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ
    atsushifx
    atsushifx 2014/11/07
    Rubyのテストコード自体がレガシー化してる。破綻する前にテストコードを直した方がいいと想うけど難しいんだろうな
  • テスト駆動開発(TDD)はもう終わっているのか? Part 2 | POSTD

    前編はこちらです 4:テストに伴うコスト 2014年5月27日 audio 今回のテーマは、テストとTDDのマイナス面です。 テストをやりすぎることがあるか、そして機能的なコードよりテストを重視するチームには問題があるかという点について議論しました。 議事録 Davidが会話の口火を切りました。 「トレードオフについて話すなら、当然そのマイナス面について理解しなければならない。なぜなら、欠点のないトレードオフは存在しないからだ」 このあと彼は続けて、TDDは開発者に何かを強制するわけではないが、ある一定の方向に導くことは確かだと言いました。 それから、最初の問題点として、テストの過剰な実施を取り上げました。 TDDでよく言われるのは、テストに失敗せずして1行のコードも書くべきでないということです。 Davidも当初はこの考え方を合理的だと思っていましたが、そのうち、テストをやり過ぎる傾向が

    テスト駆動開発(TDD)はもう終わっているのか? Part 2 | POSTD
    atsushifx
    atsushifx 2014/10/08
    プロジェクトや言語、フレームワークによって代わるので場合によるというKent Beckの言葉は正しい。問題はリファクタリングが普及していないことだろう
  • TDDという名の幻想... - Qiita

    TDDは死んだ。テスティングよ栄えよ。 by DHH http://d.hatena.ne.jp/yach/20140424#p1 【翻訳】TDD is Fun http://diskogs.hatenablog.com/entry/2014/04/25/085112 を読んで思ったことをつらつらと書いてみます。 TDDはできれば、やったほうが良いのは確か?です。 しかし、実際の開発現場で全面的に採用するのは ミドルウェア等の画面の存在しないソフトの開発以外では ほとんどの場合、無益です。 なぜなら、TDDを採用すると開発時間が膨らむ、すなわち、開発コストが 膨らむからです。そして、ソフト開発では細かな仕様は変化していきます、 するとTDDではそれに合わせ、テストを修正していかなくてはなりません。 また、TDDで書かれたテストが全てのケースを抜けなく網羅できていること は稀です、抜けは必ず

    TDDという名の幻想... - Qiita
    atsushifx
    atsushifx 2014/05/05
    生半可な知識で葉記事を書くと火傷をする好例。DHHもテスティングを否定はしてない。いわゆるウォーターフォールでもテスト工程はあるし、コスト削減でテストを省くとどうなるかはみずほ銀行などいくらでも例がある
  • これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE

    和田卓人さんによるテスト駆動開発問題解説の寄稿です! バグのないよいコードを書くには、よいテスト設計が重要です。今回は現在時刻に関する問題と、その問題で提出された実際の解答コードを紹介しながら、どのようにテスト設計し開発していくのかを解説していきます。 ゲスト解答による解答コードも公開中! by CodeIQ運営事務局 はじめに こんにちは、和田(@t_wada)です。今日は先日出題させていただいたTDDに関する問題の総評を行いつつ、テスト容易性設計について考えてみたいと思います。 問題文 私が出した問題は、以下のようなものでした。 問1. 下記の仕様をテスティングフレームワークを使ってテストコードを書きながら実装してください。 【仕様1】 「現在時刻」に応じて、挨拶の内容を下記のようにそれぞれ返す機能を作成したい。 (タイムゾーンはAsia/Tokyoとする) 朝(05:00:00以上

    これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE
    atsushifx
    atsushifx 2013/11/26
    TDDの実践的な解説。この記事を何回も読んで実際にコードをかくと、確実にプログラミング力が上がる。
  • パラメータの正当性検査とユニットテストのカバレッジ | DevelopersIO

    渡辺です。 最近はユニットテストの導入方法などに関するエントリーが多かったので、今回は実用的な小ネタとして、メソッドにおけるパラメータの正当性検査とユニットテストについて紹介したいと思います。 パラメータの正当性検査 はじめにパラメータの正当性検査について復習しましょう。Javaプログラマであれば読んでないことが許されないEffective Java(第2版P.175、ただし絶版)には次のように記述されています。 ほとんどのメソッドとコンストラクタは、パラメータとして渡される値に関して何らかの制約を持っています。たとえば、インデックス値が負であってはいけないとか、オブジェクト参照がnullであってはいけないというのが普通です。このような制約は明確に文書化すべきであり、メソッド体の初めに検査することで制約を強制すべきです。これは、エラーが発生したらできるだけ速やかにエラーを検出するようにす

    パラメータの正当性検査とユニットテストのカバレッジ | DevelopersIO
    atsushifx
    atsushifx 2013/11/15
    ここらへんはテスティングの基本なので教科書を読むべし。とはいえテスト項目が多くなってチェックしきれなく原因なのでうまく減らしたい。言語レベルでDbCができると楽だろうとは思う
  • ユニットテスト改善ガイド | DevelopersIO

    先日、日Javaユーザグループ(JJUG)主催のJJUG CCC 2013 Fallで、「ユニットテスト改善ガイド」というタイトルで登壇してきました。自分の経験を元に、ユニットテストをチームや組織へ導入する時に起こりえる問題とその解決のヒントに関するセッションです。エントリーではそのセッションの内容を再構成して公開します。 はじめに 近年のシステム開発では、ユニットテストや継続的インテグレーション(以下、CI)の導入は必要不可欠と考えられています。とはいえ、どんな組織(チーム)でも簡単に導入できているわけではありません。特に、大きな組織や古くからの慣習を残している組織では導入したくとも中々進まないと感じているところが多いのではないでしょうか?。 私は、これまでに多くの開発現場でユニットテストやCIの導入について推進してきました。成功したケースもあれば失敗したケースもあります。そして、失

    ユニットテスト改善ガイド | DevelopersIO
    atsushifx
    atsushifx 2013/11/13
    ユニットテストを効果的に書くためのHowTo。リファクタリングが中古しかないのが悔やまれる。http://www.amazon.co.jp/dp/4048678841 ならまだ安く買える
  • VOYAGE GROUP エンジニアブログ : プライベートメソッドのテストは必要ない!!

    2013年11月12日16:19 カテゴリprogramming プライベートメソッドのテストは必要ない!! こんにちは、RPAの関口です。 最近週に一度、来年の新卒達と一緒にTDDをやりながらワイワイガヤガヤしております。そのなかで「プライベートメソッドのテストはどうすれば良いのか?」 という話題がありました。プライベートメソッドのテストについては プライベートメソッドのユニットテストは書かないもの? がよくまとまっていると思います。プライベートメソッドのテスト方法について考える中で「TDDの手順に従えばプライベートメソッドのテストがしたくなることは無い」のではないか?と思うようになりました。 プライベートメソッドはリファクタリングの結果現れる! 数値の配列を渡すと平均を計算して返してくれる機能を持ったクラス、AverageCalculatorを作りたいとします。平均計算の手順をまとめる

    atsushifx
    atsushifx 2013/11/12
    正確にはプライベートメソッドをテストする必要があるということは暮らすかメソッドに問題があるので、そうならないようにプログラミングすべきということかな。
  • 状態ではなく、振る舞いをモックせよ

    TL;DR GOOS『実践テスト駆動開発』で触れられている「ロールをモックせよ」について、違った角度で解説ドメインモデルを豊かにすることでコードがシンプルになる例Mock Behaviors, Not Statesユニットテストを記述する際、テスト対象のオブジェクトが利用しているオブジェクト(依存オブジェクト、隣接オブジェクト)はモックオブジェクトにして、テストしたい状況をテストコード側からコントロールします。しかし、闇雲にモックを使ってテストを記述すれば良いわけではありません。今回は、モックが有効に機能するテストとはどういったものなのかを解説します。 サンプルコード簡単なサンプルで説明します。Extract Till You Dropのモデルと近いものを使います。グループ、メンバー、およびグループリポジトリがあります。グループオブジェクトはインメモリでは所属メンバーの情報を保持しておら

    状態ではなく、振る舞いをモックせよ
    atsushifx
    atsushifx 2013/11/08
    TDD\BDDでの注意点。テストで大事なのは中を意識させないこと。そのクラス/モジュールの入出力・振る舞いをテストするということ。
  • テストフレームワークのほうのUnityでC言語でもTDDを試す - Bye Bye Moore

    奥さん、僕ぁC言語でもTDDしたいんですよ! ……というわけで、Rubyで実現する素敵なC言語TDD環境、Unityです。 3Dゲームを作るアレではなく、TDD用テストフレームワークです。 UnityRubyistにはお馴染みのRackを使っています。 Ruby&Rack環境が方は先に導入しておいて下さい。 導入が終わりましたら、 "公式様"にとんで頂き、 下の方にある「download unity」から圧縮ファイルを入手します。 これを解凍すると色々と並んでいます……が 今回用があるのはexampleです。 これの中身を詳しく見て行くと $ ls examples/ helper rakefile_helper.rb test makefile readme.txt test1.out rakefile.rb src test2.outとなっています。 テスト対象のファイルはsrc、

    テストフレームワークのほうのUnityでC言語でもTDDを試す - Bye Bye Moore
    atsushifx
    atsushifx 2013/11/02
    名前がバッティングしているのはよくないな。知名度が低いほうが負けるし話が通じなくなる。公式サイトによるとCMockと組み合わせて組み込み用Cでも使えるといっているのは期待できる
  • JUnit+Mockitoを使ったWebアプリケーションの単体テスト

    自動テストを導入することにより、テストケースの作り方を統一でき、網羅できます。全体を自動テストにできれば、変更部分以外の障害を防止できます。そして、テスト作業がコーディング作業になることによって、楽しくなるでしょう。実際のプロジェクトに導入するにあたってはいくつかの課題がありますが、自動テスト用のテストデータをあらかじめ用意しておくこと、DbUnitMockito・djUnitを使うことで解決できます。 対象読者 今回の対象読者は、下記のとおりです。 実際の開発プロジェクトへの自動テストの導入を検討されている方 JavaによるWebアプリケーション開発についての知識がある方 JUnitの基的な知識がある方 必要な環境 JDK 7 Eclipse 4.3 Tomcat 7 自動テスト導入における課題 JUnitの使い方は簡単なので、試しに使ってみたという方は多いと思います。しかし実際に業

    JUnit+Mockitoを使ったWebアプリケーションの単体テスト
    atsushifx
    atsushifx 2013/10/24
    [JUnit[Mockito][Webアプリケーション][CodeZine]
  • 単体テストフレームワーク(xUnit)に関すること - 勘と経験と読経

    このブログエントリの言いたいことがわかるようでわからなかったので、整理してみる記事。ドキュメントベースの単体テストとxUnitの類いの単体テストフレームワークの違いに関する私見。ツール(手段)の話ではなく、目的を中心に考えれば良いと思っている。 もし、ドキュメントベースの単体テストをそのまま踏襲したままで、xUnitを導入しようとするならば、もう一度テストの対象や目的を確認してください。xUnitは手段でしかありません。xUnitは小さなプログラムを動作確認するために作られたツールです。 ドキュメントベースの単体テストでxUnitを導入する前に考えて欲しいこと | DevelopersIO ドキュメントベースの単体テスト 例えばこんな「ドキュメントベースの単体テスト」が行われていて、いきなりxUnit類のツールを適用するとかなり混乱すると思われる。 割と「単体テスト」というものを実施するこ

    単体テストフレームワーク(xUnit)に関すること - 勘と経験と読経
    atsushifx
    atsushifx 2013/10/22
    なんだか炎上しそうな記事。ユニットテストはツールに過ぎない。BDDにおける振る舞いのテストまで考えないとプロセスの改善につながらないだろう。xUnit前提のときは宣言的なプログラムを書くものだし
  • ユニットテストが何のことかわからなかったわけだが。 - 馬車馬のクリップボード

    2013-10-08 ユニットテストが何のことかわからなかったわけだが。 私事 いまだにユニットテストって受け入れられないんだろうな - 個人的なまとめこちらの記事を読んだ。 まず最初に、ユニットテストってなんぞ?となり、はてなのキーワードを見たのち、一応グーグル先生にも訊いてみた。結果、単体テストのことらしいと把握。自分が認識してる単体テストと上記の記事で言われてるユニットテストが同じものであるかは置いといて、単体テストをやらないプロジェクトの恐ろしさに震えた。 自分は基的にエンドさん相手に仕事してる。たまに違うときもあるけど、基的にエンドさんに直接顔合わせる機会がある仕事が大半。んで、碌にテストしてないようなものを放り込むと最終的に残された人間が泣きを見る状況に陥らされる。 なので、単体テストもしないプロジェクトって経験したことないんだけど、ブコメとか見ると案外そういうプロジ

    atsushifx
    atsushifx 2013/10/09
    UnitTestはコードを書く前にメソッドの呼びだしと返し値を児童で検証するフレームワーク。しかし、いまだにこういう現場があることに絶望する。大事なことが伝わってない感じ
  • ユニットテストにまつわる10の勘違い | DevelopersIO

    渡辺です。さる方面からテスト系のエントリーがまだか…と催促されたので、ユニットテストについて少し考えてみたいと思います。 最近、TwitterのTLをチェックしていると、JUnitを利用しているにも関わらず違和感のあるTweetや、原因をJUnitにして来解決すべき問題から目をそらしているようなTweetを多く見かけます。そこで、JUnitをによるユニットテストに関するありがちな勘違いをまとめてみました。 なお、JUnitの部分は、RSpecでもNUnitでも適当に置き換えて読んでも構いません。 1.JUnitを使うことが目的という勘違い JUnitを利用すること自体を目的にしたところで何も得る事はありません。 ありがちな話ですが、「納品物としてJUnitのテストコード(または実行結果)を求められている」ことが理由でJUnitを利用しているならば、それは足かせでしかない可能性があります。

    ユニットテストにまつわる10の勘違い | DevelopersIO
    atsushifx
    atsushifx 2013/09/17
    当たり前のことなんだけど難しい。UnitTestではテストする対象が何をするかを最初に明確にできることと、それを宣言できることが魅力なんだけど実践するには高い技術力が入る。Agileプロセスが元なこともあってコードを
  • ブラックボックステストとホワイトボックステスト | DevelopersIO

    テスト分類のひとつにブラックボックステストとホワイトボックステストがあります。 ブラックボックステストとは、テスト対象の内部を意識せずに外部仕様のみからテストケースを構築していく手法です。ユニットテストであれば、テスト対象となるメソッドの実装(コード)を意識せず、メソッドのAPI仕様からテストケースを作成することになります。 一方、ホワイトボックステストでは、テスト対象の内部を意識し、どのような構造であるかを踏まえたテストケースを構築します。ユニットテストであれば、テスト対象となるメソッドの実装(コード)を意識し、分岐や繰り返しなどを考慮しつつテストケースを作成することになります。 さて、ユニットテストはブラックテストでしょうか? それともブラックボックステストでしょうか? 「JUnit実践入門」では次のように記述しました。 書で扱うユニットテストは、テスト対象の内部ロジックを考慮して行

    ブラックボックステストとホワイトボックステスト | DevelopersIO
    atsushifx
    atsushifx 2013/08/13
    UnitTestにはコーディングのためのテストと外部インタフェースのためのテストの2種類があると思う。前者がホワイトボックス的なやつで後者がブラックボックス的。前者はコーディングのためのツールだと思う。
  • 書いたコードが一発で動作するとなぜ不安なのか : akiyan.com

    書いたコードが一発で動作するとなぜ不安なのか 2013-04-21 プログラミングにおいて少なくないコードを一気に書き上げたとき、そのコードが一発で動作 or テストケースに通るとなんともいえない不安を覚えるのは、プログラマーなら誰でもあるあるネタだと思う。「当にこれ、一発で動作しちゃっていいの? 俺、そこまでミスしないプログラマーだっけ?」なんて自分を疑ったりする。 このあいだもそんなことがあったんだけど、ふと気になった。不安になる理由は、自信のなさからくるものだけだろうか? ちなみに、書いたコードが正しく動作しないとき、コードを修正すると不安になることはない。一体、なぜ? 一発で動作したブラウザの画面を見ながら、考えてみて、閃いた。「コードの修正は、書いたコードを見直す機会にもなっているから」じゃないだろうか。コードの見直しは「リファクタリング」といっていもいい。 一発で動作してしま

    書いたコードが一発で動作するとなぜ不安なのか : akiyan.com
    atsushifx
    atsushifx 2013/04/21
    頭の中でそこまで具体的に考えてないはずというのが自分の答え。こういったアウトプットに関するものはデザイナーとかの意見も聞きたい