タグ

testingに関するmorygonzalezのブックマーク (20)

  • Railsのテスティングピラミッド(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Rails Testing Pyramid 原文公開日: 2013/10/09 著者: codeclimate テストの速度が期待より遅くなっていませんか?それとも、テストが不安定でリファクタリングやアプリ機能の根的な変更もままならない状況になっていませんか?長年運用されている大規模なRailsアプリではこうした不満をよく目にしますが、テスティングのためのよい手法が浸透していれば、こうした問題が長期に渡って発生することはないはずです。 「テスティングピラミッド」のコンセプトは、テストのバランスの維持やテストスイートの高速化、アプリの機能変更コストの削減に有用であり、テストスイートにおけるさまざまな種類のテストを組み立てるときの中心に位置づけられます。 Railsで最もよく知られている2種類のテストについては皆さんも既に実

    Railsのテスティングピラミッド(翻訳)|TechRacho by BPS株式会社
    morygonzalez
    morygonzalez 2018/02/21
    確かに捨ててよいテストケースはあると思う。
  • xUnit Test PatternsのTest Doubleパターン(Mock、Stub、Fake、Dummy等の定義) - 千里霧中

    最近、昔作ったTest Doubleの解説資料を参照・引用してくれる方がちらほら出ていて恐縮しているのですが、見直してみると結構わかりにくい資料なので今回文章としてまとめたいと思います。内容は世間一般的に言われているMock、Stub、Fake、Dummyといった言葉の定義になります。 Test Doubleとは Test Doubleとは、テスト実行時に、テスト対象が依存しているコンポーネントと置き換わるものです。「テスト代役」と訳されることもあります。世の中でMock、Stub、Fake、Dummyなどと呼ばれているものの総称に位置づけられます。 簡単な例を以下に示します。このコードでは、テストメソッド「テストコード()」がメソッド「テスト対象()」をテストしています。また「テスト対象()」は、中でメソッド「外部メソッド()」を実行しています。なお「外部メソッド」はテスト対象でないとし

    xUnit Test PatternsのTest Doubleパターン(Mock、Stub、Fake、Dummy等の定義) - 千里霧中
  • クライアントサイド JavaScript (AltJS) のテストを書くのは本当に難しいのか? - @kyanny's blog

    TL;DR - 最初の一人はつらいけど後続はそうでもないので先駆者は自覚と誇りを持ってオールグリーンを維持しよう このエントリはMarionette.js ベースで3ヶ月開発したアプリのカバレッジ推移をまとめてみた - @kyanny's blogというエントリの続きにあたります。未読の方は先にそちらを一読されることをおすすめします。 Marionette.js ベースで3ヶ月開発したアプリのカバレッジ推移をまとめてみた - @kyanny's blogの結論で触れたように、今回テストを書くことにこだわったのは、「クライアントサイド JavaScript (AltJS) のテストを書くのは当に難しいのか?」という問いに対する自分なりの回答を実践して検証してみたかったという理由があったからだ。 以前から「クライアント JavaScript (CoffeeScript や他の AltJS を

    クライアントサイド JavaScript (AltJS) のテストを書くのは本当に難しいのか? - @kyanny's blog
  • Saucelabsを使ったマルチプラトフォームテストが便利そう

    複数のプラットフォームでのブラウザテストができるSaucelabsを使うと、クロスブラウザテストで楽ができそう。 CapybaraでE2Eのテストを作成する必要があったのですが、マルチプラットフォームのクロスブラウザテストもした方が良さそうだったのでSaucelabsを使ってみたら結構良さそうだった。 Saucelabsを利用することで豊富なプラットフォームとブラウザでのテストができて、実行時の詳細なログを確認できるだけでなく、テストの実行時の様子をオンデマンドでもscreenshotsやscreencastsで確認できる。 この辺の環境を自前で構築するする手間を肩代わりできる。 無料アカウントだと利用できるVMの数やテストできる時間に制限はあるものの、それ以上に恩恵は大きいきがする。 簡単にセットアップをメモしたもの。 Gemfileに以下のgemを追加 sauce-connectを使用

  • アクセルを踏むためのテストとブレーキを踏むためのテスト - yoshiori.github.io

    Rebuild.fm#29 聴いてて少し語りたくなってるので書いてみる。 テスト考2014 – Hidden in Plain Sight から発してると認識してるんだけど新年早々テストについて盛り上がってますね! で、個人的な意見を書くまえに、俺はテストどころかコンピュータサイエンスも学んだ事ない人間ですので色々見当違いな事言ってるかもしれないけど、エンジニアのスタートが組み込み系の QA エンジニアなので現場感覚はそれなりにあるつもりです。 で、早速なんだけど上記ブログから引用させてもらうと まぁ、なんにせよ、現在のウェブアプリ開発におけるテストなんて一歩間違えれば「ままごと」みたいなレベルだから、そんなに原理主義的になるのはダサいよねって話です。 id:kennejima に百パー同意で、ぶっちゃけちゃんと QA やった人間からすると境界値テストすらしてないしホワイトボックステストだ

  • Bitbucket | Git solution for teams using Jira

    With best-in-class Jira integration, and built-in CI/CD, Bitbucket Cloud is the native Git tool in Atlassian’s Open DevOps solution. Join millions of developers who choose to build on Bitbucket.

    Bitbucket | Git solution for teams using Jira
  • テストのめどい話

    最初にめどい言い訳をせねばならぬ俺は江島氏ともきょん氏とも面識はないですが、お二人ともが俺のことを知ってることを俺も知ってる程度には狭い業界であり。どちらかに肩入れしたいわけではないです。喧嘩したいわけでもないです。普段あまりここでは言及しないですが俺は今の仕事としてはテストを書いたりテストを実施したりする係をしてノリクチをしのいでおり、いわばテストは業ですので、テストに言及することは今現在の同僚に対して意図しない受け取られ方をする可能性があるので困るので、それもあって普段はここではあまりテストの話はしないわけだが、だからと言って沈黙を破ってテストの話をするのが同僚に対して含みがあるというわけでもないです。とはいえ俺は大学等で真面目にソフトウエア工学の講義を受講したことがなく、経験と勘と昔取った杵柄だけでってるので、そういう意味では若干の後ろめたい気持ちもある。で、テストって何なん俺が

    テストのめどい話
  • テスト考2014 - Hidden in Plain Sight

    年々、ウェブアプリを開発するときにテストを書こうという機運が強くなっていると感じる。 これは、開発パラダイムの成熟を意味することであり、基的に良いことだと思っている。 しかし同時に「テスト原理主義」とでもいうような極端な考え方もでてきていて、開発スタイルをめぐって摩擦が起こっている。 そして、この議論は「テストは、ないよりあったほうが良いよね」という、微視的には誰も反論できないロジックに押し通されがちで、「地獄への道は善意で舗装されている」の典型的な現象に見えて仕方がない。 テストを書かない、というと背景にどんな深い考えがあっても素人くさく聞こえ、逆にテストを書くというだけで良いプログラマーに見える、という非対称な化粧効果がある。ソフトウェア・コンサルティング会社がテスト好きなのは決して偶然ではない。 ソフトウェアというのは、結局のところ、動いてナンボ、使われてナンボである。 期待するも

    テスト考2014 - Hidden in Plain Sight
  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
    morygonzalez
    morygonzalez 2013/11/19
    プライベートメソッドのテストをどうするか問題
  • minitest で mock や stub を使う - おもしろwebサービス開発日記

    minitest には標準で mock や stub の機能が付いています。それらの挙動について学んだのでメモ。 コード例 下記のような Person クラスと Whisky クラスがあるとします。これらについて minitest の mock と stub を使ってテストを書いてみます。 class Person def eat(food) food.taste end def drink(whisky) whisky.alcohol.upcase end end class Whisky def alcohol # まだ実装されていない end end mock minitest では下記のように mock を書きます。 describe Person do subject { Person.new } describe '#eat' do it '引数にとったオブジェクトの #tas

    minitest で mock や stub を使う - おもしろwebサービス開発日記
  • 体育の日って高速に唱えるとテストの日に聴こえる - ✘╹◡╹✘

    テスト書きすぎ問題 - hitode909の日記 階層が増えるとテストが増える - はこべブログ ♨ テストと対応関係 - $shibayu36->blog; 最近書いているWebアプリは、HTTPリクエストを送ってレスポンスと状態をテストする、というテストだけ書くようにしてる。リクエストするとブログエントリを返す、というサービスだとこういう風なテストを書いてる。(HTMLを返すようにすると話が広がって説明が面倒なのでJSONを返すAPIで説明する) describe "Entry resource" do let(:params) do {} end let(:env) do { "HTTP_AUTHORIZATION" => "Bearer: #{access_token.token}" } end let(:access_token) do AccessToken.make(user

    体育の日って高速に唱えるとテストの日に聴こえる - ✘╹◡╹✘
    morygonzalez
    morygonzalez 2013/10/15
    テスト結果がドキュメントになるのよい
  • テスト書きすぎ問題 - hitode909の日記

    テスト書きすぎるとよくないって言ってる人がいた.DHHっていう人.作業時間の1/3以上テストしてたらおかしいとか,ActiveRecordのバリデーションなど,Railsの機能はテストしない,とか. Signals vs. Noiseの去年のエントリに、テストをどれくらい書くべきかということについてDHHが指針を示していたものがあったので... - Sooey 偉い人が言ってるからという理由で,テスト手抜き派の人に良い材料を与えてしまった.僕は意見ちがって,作業時間半分以上はテスト書いたりしてる. テストたくさん書くと,最初に書くときのコストは増える.けど,あとから読む時や,変更したい時には,読むだけだし,書くのも差分だけで良い.コード体を理解できれば,要らないテスト捨てるのは,落ちたのを消すだけだから簡単.あとで見て,テスト足りないと分かったときに,明文化されてない仕様からテストを補う

    テスト書きすぎ問題 - hitode909の日記
    morygonzalez
    morygonzalez 2013/10/15
    遊びのテストも書こうと思いました
  • Testing vs. Checking

    Post-postscript: Think of this blog post with its feet up, enjoying a relaxing retirement after a strenuous career. Please read the new version first. In the years since the original post, I’ve further refined my take on the subject of testing and checking, mostly in collaboration with my colleague James Bach. Our current thinking on the topic appears on his blog, and I provide some followup here.

    Testing vs. Checking
  • CI で稀に失敗してしまうテストへの対処方法 - クックパッド開発者ブログ

    技術部の福森です。 クックパッドでは RSpec と Jenkins を利用して CI による自動テストを行なっています。 テストの数は 12000 examples を越えていて、テストによっては稀に失敗する物が出てきています: 時間帯依存で失敗してしまうもの 他に同時に実行されるテストに依存しているもの (並列実行で組合せが変わり再現する) インテグレーションテストでの ajax リクエストの微妙なタイムアウト etc また、番環境を壊さないよう、 CI で成功したリビジョンのみデプロイ可能となっており、開発者が push しデプロイしたいと思っている時に無関係な原因で失敗する事を避けたいという欲求があります。 なぜなら、再度ビルドを実行する時間 (およそ 10 分) の間待たされる事になるからです。 そこで、そのようなテスト起因での失敗を減らし、かつ開発者にそれらを修正してもらうた

  • Oktest - kuwata-lab.com

    Oktest News [2014-07-01] Oktest.py 0.15.0 released [2014-03-20] Oktest.py 0.14.2 released [2014-03-11] Oktest.py 0.14.1 released [2014-03-10] Oktest.py 0.14.0 released [2011-10-25] Oktest.pl 0.0102 released [2011-08-17] Oktest.js 0.1.0 released Introduction Oktest is a new-style testing library for Python, JavaScript (node.js), Perl, and so on. Features: New assertion style easier to read and writ

  • Signals vs. Noiseの去年のエントリに、テストをどれくらい書くべきかということについてDHHが指針を示していたものがあったので... - Sooey

    Signals vs. Noiseの去年のエントリに、テストをどれくらい書くべきかということについてDHHが指針を示していたものがあったので読み返してみました。 Testing like the TSA by David of 37signals(TSAはTSAロックのTSAですね。RailsConf行く時に買った) 予想通り、DHHはなんでもかんでもテストを書くということに対してはだいぶ批判的なスタンス。 曰く、テストを書くということの裏側には、テストを書く時間、テストをアップデートする時間、テストコードを読んで理解する時間といったコストが発生しているので、テストを書くことによって得られるメリット(回避できる問題)とのバランスをよく考える必要がある、と。 議論を呼ぶことは承知のうえでDHHが提案する「Railsアプリのテストにおいて、やってはいけない7つのこと」は以下の通り。 100%の

  • Pending は邪悪な物であり、邪悪な物を生み出した人間には斧を

    そらはーです! RSpec で pending 使ってテストを一時的に無効化した事ある方は大勢いらっしゃるんじゃないでしょうか! なんらかの事情で一時的に pending せざるを得ない状況ならともかく、pending したなら責任をもって該当のテストを治すか、そもそも不要なら消すなどといった対処をしてもらいたいものですね! でも、実際来週までには!とか言っても放置する人間や、そもそも直さず1年,2年以上放置される事もしばしばあるのが現実です……… pending を放置する事によって、実はそれは(他の人にとって)かなり重要なテストで、そんなテストがpendingされてる訳ないと思った、他のメンバーによる変更で実はそのテストがコケて事故っていたという可能性も存在するわけです。 重要なテストをAさんが pending する (「テストは追って修正する」みたいな感じで) 比較的大きめの変更を

  • Better Specs. Testing Guidelines for Developers.

    What is Better Specs Better Specs is a collection of best practices developers learned while testing apps that you can use to improve your coding skills, or simply for inspiration. Better Specs came to life at Lelylan (open source IoT cloud platform) and checking out its test suite may be of inspiration. Better Specs focus on Rails testing, but our goal is to create testing guidelines covering mos

  • RSpec + capybara-webkit で ヘッドレステスト - LocalScope::

    ここしばらく、Rails 3.x ベースで簡単な開発をしています。 どうせやるなら、新しいことやらないと、ということで、今回は Behavior Driven 開発をしようとしてました。Cucumberでの、振る舞いベースの要求仕様策定から、RSpecを用いた Test Driven な開発へと落とし込んで行く方法です。The RSpec Bookやら、Continuous Testing: with Ruby, Rails, and JavaScriptを読みつつ、色々と実験してました。 そんなわけで、いくつかTipsなどまとめたいと思っているのですが、とりあえず、役に立ちそうなことを先に書いみようということで、前置きが長くなりましたが、capybara-webkitについて。 RSpecは、 「プログラムの振舞 (behaviour)」を記述するためのドメイン特化言語 (DomainS

  • 「あとで捨てることになるコードのテスト」について - @kyanny's blog

    同僚とこんな話をした。 例えば「キャンペーンサイトとプレゼント応募フォーム」のような、一時的にしか使わないことがわかっているコードに対するテストをどの程度書けば良いのか?納期は迫っていて、他にもっと優先度の高い仕事もあるとする。最低限 200 が返ってくることだけをテストすれば良いのか、 POST したらどのようなリソースが作られるかまで厳密にテストすべきなのか。 そのとき述べた僕の意見を書いてみる。 追記 同僚の名誉のために補足すると、その時は「不安な部分をテストすべき」という当たり前な結論に落ち着いたのだけど、そもそも詳しく聞いてみたら「僕ならここは不安だから書くと思う」と考える部分については、彼はすでに書き終えていて、その上でさらに厳密にテストを追加すべきだろうか?という問題意識を持っていた、という。なので、以下に意識高そうなことをつらつら書いているけど、同僚氏のほうが僕よりよっぽど

    「あとで捨てることになるコードのテスト」について - @kyanny's blog
  • 1