タグ

テストに関するakatakunのブックマーク (57)

  • [Ruby] rspec-mocksを使ってテストで上手に手を抜こう - Qiita

    対象 rspecでの簡単なテストの書き方は基的に知ってる rspec-mocksを使ったテストを知らないor知ってるけど雰囲気で使っている 上記に当てはまる私自身が、テストをより効率的に書くために、広く浅くざっくり調べた内容なので、より詳しく知りたい人は公式ドキュメントなどを漁ったほうが良いです。 ※記事中に出てくるコードの多くは、rspecによるテストコード内で実行されるコードです。周辺のコードは省略するので、適当に文脈から読み取ってください。 前提 rspec-core (3.7.1) rspec-mocks (3.7.0) rspec-rails (3.7.2) rspec-support (3.7.1) rspec-mocksとは rspec-mocksは、rspec用のテストダブルフレームワーク。モックとかスタブとかスパイとかサポートしてくれる。 テストダブルとは、テスト対象が

    [Ruby] rspec-mocksを使ってテストで上手に手を抜こう - Qiita
  • Ruby での Test::Unit や MiniTest::Unit を使った複数のファイルのテスト - vivid memo

    Perl で複数のテストを実行する場合は prove コマンドがあるけれど、Ruby の場合はどうするのがいいんだろうなー。 と思って調べてみました。 『Rubyベストプラクティス -プロフェッショナルによるコードとテクニック』 によると、Rake::TestTask を使うのが良いようです。 以下のような rakefile を書いて、あとは rake test で実行、と。 # coding: UTF-8 require 'rake/testtask' task :default => [:test] Rake::TestTask.new do |test| # $LOAD_PATH に追加するパス (デフォルトで 'lib' は入っている) test.libs << 'test' # テスト対象ファイルの指定 test.test_files = Dir[ 'test/**/test_*

    Ruby での Test::Unit や MiniTest::Unit を使った複数のファイルのテスト - vivid memo
    akatakun
    akatakun 2019/01/07
    bundle exec rake test
  • [iOS] コマンドラインからUnit Testを行う - Qiita

    CI上でしか再現していないUnit Testの問題を調査している時に調べたメモを共有しておきます。 xcprettyを使うとxcodebuildが出力するログを色付きで綺麗に表示することができたり、結果を整形済みhtmlとして出力してくれるので、Xcodeによるログ出力より見やすく開発効率が上がるかもしれません。 macOS High Sierra 10.13.2 Xcode 9.2 iOSシミュレータ一覧表示

    [iOS] コマンドラインからUnit Testを行う - Qiita
  • Rails4でのテスト実行時にafter_commitを呼ぶ - Qiita

    Rails4での話。(3以下は未確認。おそらくRails3でも同じ) tl;dr rails4ではテスト実行時にtransactional_fixturesのせいでafter_commitが呼ばれない test_after_commitを使えば解決できる rails5では修正されている 問題 test実行時にActiveRecord::Callbacksのafter_commitが呼ばれない そのため、意図通りに動かない・テストが通らないということになる after_commitのドキュメントには以下のように書いてある https://github.com/rails/rails/blob/v4.2.5/activerecord/lib/active_record/transactions.rb#L235-L237 Note that transactional fixtures do n

    Rails4でのテスト実行時にafter_commitを呼ぶ - Qiita
    akatakun
    akatakun 2018/03/16
    Transactional Fixturesを有効にするとテストごとにDB実行前の状態に 戻る ,しかし、Rails 4ではコミットされないがためにafter_commitが呼ばれない
  • 特定のテストのみを走らせる - Qiita

    のように実行すると、 そのディレクトリにあるテストファイルがすべて読み込まれて実行される。 テストを書きながら実装しているときは、 特定のテストのみを走らせたい。 go test -runあたりでできそうだったが、うまく行かなかったので、 以下のようなスクリプトを書いた。 #!/bin/bash SRC=$(go list -f '{{range .GoFiles}}{{.}} {{end}}') TESTS=$(go list -f '{{range .TestGoFiles}}{{.}} {{end}}') if [ $# -gt 0 ]; then TESTS=$1 fi go test $SRC $TESTS

    特定のテストのみを走らせる - Qiita
    akatakun
    akatakun 2018/03/09
    特定のテストの実行は-runオプション
  • go標準のbenchmark機能の使い方 - Qiita

    ReadMeFirst golangには、関数のbenchmarkを行うパッケージ・ユーティリティが標準で含まれています。 今回はgoで関数単位でのbenchmarkをとる方法について書きます。 testの基的な実行方法については、前記事を参照。 ベンチマークするテスト関数を作る testing package の benchMark用の 構造体を使います。 Benchmark関数は以下のように宣言します。(規約) package main import ( "fmt" "testing" ) func BenchmarkAppend_AllocateEveryTime(b *testing.B) { base := []string{} b.ResetTimer() // Nはコマンド引数から与えられたベンチマーク時間から自動で計算される for i := 0; i < b.N; i+

    go標準のbenchmark機能の使い方 - Qiita
    akatakun
    akatakun 2018/03/07
    アロケーション関連のデータも取れる
  • GitHub - minimaxir/big-list-of-naughty-strings: The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data.

    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 - minimaxir/big-list-of-naughty-strings: The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data.
    akatakun
    akatakun 2018/02/22
    フォームに投げ込むと問題になりそうな文字列のリスト
  • 意図的にプログラムの動きをランダムにしてバグを早期発見するテクニックについて|Rui Ueyama

    プログラムを書いていると、素直に実装した結果として毎回特定の条件が満たされているけど、来それは誰も保証してないという場面に出くわすことがよくある。保証されていない偶然の動作に依存することで生じるバグというのはかなり多い。 例えば最近では、ドラゴンボールZ ドッカンバトルというゲームで、2回SQL文を実行した結果が同じ順序で並んでいるという誤った期待をしているコードがあったせいで、ガチャの確率表示がめちゃくちゃになってしまって、運営が確率操作しているのではないかという騒動が発生したことがあった [1]。データベースでは空のテーブルにデータを追加してその直後に読み返すと、データを追加した順番に結果が返ってきたりしがちなので、問題のコードはきれいなテスト環境では偶然うまく動いてしまったのだろうと思う。 上のようなバグを防ぐために最近よく使われているのは、来保証しないところをわざと壊すという方

    意図的にプログラムの動きをランダムにしてバグを早期発見するテクニックについて|Rui Ueyama
    akatakun
    akatakun 2017/12/13
    Goでは、言語組み込みのハッシュテーブルをイテレートするときの順番が、意図的に乱数を使ってランダム化されていて、同じプログラムを実行しても、要素を訪れる順番が毎回異なるようになっている
  • テストがなかった無法地帯にテストを導入して開発速度を1.7倍にした話 - Qiita

    テストがなかった無法地帯のプロジェクトに自動テストを導入して、開発速度を1.7倍にした話をします。 自動テストがなぜないのか 自動テストのないプロジェクトには、そうなる理由が必ず存在します。よくみる理由は、「時間がないから1」「テストの書き方がわからないから」「無理やりテストを書いたつらい経験があったから2」といったものです。今回のプロジェクトの場合は、以下の2点でした: 自動テストの書き方がわからないから レビューがテスト代わりだったから まず、チーム編成が変わって私ともう一人がチームに加わるまで、実装者の中に自動テストの経験者はいませんでした。このような状況では、自動テストは困難になります。なぜなら、何をどうやってどこまでテストするかを決めるには、多少の慣れが必要だからです。この慣れがないと、何をしたらいいかわからないという状態に陥りがちで、結果として自動テストが後回しにされてしまいま

    テストがなかった無法地帯にテストを導入して開発速度を1.7倍にした話 - Qiita
  • 予約済みドメイン (.example, .localhost, .test) について | blog.jxck.io

    Intro 特別なドメインとして予約され、特定の用途で使用可能なドメインとして、 .example .localhost .test などがある。 localhost の Draft や、 gTLD である .dev が Chrome で Preload HSTS になったなどの動きを踏まえ、これらの意味や用途を解説する。 ドメインを利用する上での注意 ドメインは、レジストラなどを通じて取得するため、インターネット上では好き勝手に取得することはできない。 しかし、自分で設定可能な DNS や hosts ファイルなどを使えば、任意のドメインを任意のアドレスに解決させることができる。 例えば、自分が適当にリクエストのテストを行うためのドメインを hosts ファイルに設定し、ループバックアドレスに解決して流していたとする。 このドメインがたまたま実在するものだった場合、そのテストを他のユーザ

    予約済みドメイン (.example, .localhost, .test) について | blog.jxck.io
    akatakun
    akatakun 2017/09/27
    特定のDomainをLocal Test用hostsに記載するなどして使用すると、実行環境によってはそのDomaunにPacketが流れる恐れがある,DocumentやTestには予約済みDomainを用途ごとに使用する,.example, .localhost, .test, etc...
  • Go 1.2で追加されたコードカバレッジ解析ツールを使う - Qiita

    Help us understand the problem. What is going on with this article?

    Go 1.2で追加されたコードカバレッジ解析ツールを使う - Qiita
  • Go言語で API サーバーを開発する | カメリオ開発者ブログ

    こんにちは!白ヤギの開発者、森です。 白ヤギではいま API サーバーを Go 言語で開発しています。 皆さんも Go の話題をよく見聞きするようになっていると思います。今回は白ヤギの業務でどんな風に Go を使って開発しているかの一端を紹介します。 余談ですが、先日、大学の先生とお話ししたときにこんな話を伺いました。その先生は学生にプログラミングを教えているそうですが、何割かの学生は及第点に届かないそうです。しかし、そういった学生がプログラミングの素養がないかというとそういう訳ではなく、プログラミングを学ぶ上でその学生にとって何が理解を促すのかが違うだけなのだと仰っていました。教える側として全ての学生が習得できるプログラミング教育というのを見つけられていないのが悔しいといった話をされていました。 何かを学ぶというのを一般論では語るのは難しいということかもしれません。そのため、私はこうい

    Go言語で API サーバーを開発する | カメリオ開発者ブログ
    akatakun
    akatakun 2017/08/28
    テーブル駆動テストで T.Error を使わないと、データ駆動テストの有効性を生かしきれません,ちなみに標準の log ライブラリでは以下のようにフラグをセットするとログ出力されます
  • Goとテスト

    Takuya UedaSouzoh, Inc. (affiliated by Mercari, Inc.) - Go Engineer

    Goとテスト
    akatakun
    akatakun 2017/07/31
    自前のテスティングツールは不要(言語のコンセプトを守る),Go Mock: インターフェースのモックを作るツール
  • Rails アンチパターン - 錆びついたファクトリー (factory_girl) - アジャイルSEの憂鬱

    技術書典は書く側で参加したい気持ちはあるけど、書くネタと書く時間があるかどうか…— 神速@リリカルエンジニア (@sinsoku_listy) 2017年4月9日 あー、自分の知ってるRailsアンチパターンとか書きたいかも。自分の犯した罪(アンチパターン)を贖罪したい…。— 神速@リリカルエンジニア (@sinsoku_listy) 2017年4月9日 技術書典2 に行ったら無性にを書きたくなったけど、書くのは 面倒 大変です。 というわけで、とりあえずブログに記事を1つ書いてみた。 factory_girl factory_girl はテスト用データを作成するときに使う gem です。 下記は User のモデルを定義するファクトリーです。 FactoryGirl.define do factory :user do first_name "John" last_name "Doe

    Rails アンチパターン - 錆びついたファクトリー (factory_girl) - アジャイルSEの憂鬱
  • テストしやすいGoコードのデザイン

    テストしやすいGoコードのデザイン golang.tokyo #2 12 December 2016 Taichi Nakashima 言いたいこと 明示的であれ! 2 whoami @deeeet / @tcnksm (GitHub) http://deeeet.com A PaaS Dev&Ops (Using go for CLI tool, API, Batch jobs) 3 OSS Tools gcli - The easy way to build Golang command-line application ghr - Create Github Release and upload artifacts in parallel Packages go-httpstat - Go package for tracing golang HTTP request latency

    akatakun
    akatakun 2016/12/13
    Table Driven Testに落とし込めるまで分解する,`os.Exit`(もしくはそれを暗黙的に呼ぶ`log.Fatal`)はあまり使うべきではない(deferが実行されないため)
  • 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
    akatakun
    akatakun 2016/09/06
    短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自
  • UnitTestでのprivateメソッドとの向き合い方 - ジムには乗りたい

    privateメソッドのUnitTestについて、下記のような扱いがあると思う。 スコープを(例えばprotectedに)拡張する 直接間接を問わず、リフレクションなどを活用してテストする これらに対して、ずっと何か違和感を覚えていた。 実践JUnitでちょっと触れられている箇所があって、自分なりの読み解きで何となく向き合い方が腹落ちしたので書いておく。 UnitTestはメソッドのテストではなく、そのふるまいのテストにより重きが置かれるべき privateメソッドは実装の内部詳細であり、その変更はふるまいに影響をあたえるべきではない 上記の前提を考えると、基的にはpublicスコープに対してのテストで十分になりえるはず。 そのクラスのふるまいであるなら少なくともパッケージ以上にスコープが(テストのためではなく)拡張されることに違和感はない。 そうでないならば別のクラスに切り出すようなふ

    UnitTestでのprivateメソッドとの向き合い方 - ジムには乗りたい
    akatakun
    akatakun 2016/09/06
    Objective-Cのテスト書いてた時はクラス拡張でアクセス属性書き換えてたなー,UnitTestはメソッドのテストではなく、そのふるまいのテストにより重きが置かれるべ,privateメソッドは実装の内部詳細であり、その変更はふるま
  • Cucumber のフィーチャの文法 - Gherkin | そんなこと覚えてない

    Cucumber 利用していますか? 基的な使い方はわかるんだけど、なんだかもっと上手く使えるんじゃないだろうか?と、もやもやしながら使っています。 少くとも私の周りには Cucumber について情報交換できる人がいないです。 それでも、SlideShare や Speaker Deck なんかに公開されたスライドでよくみかけるので、使い込んでるところでは使い込まれているのだと思います。 Cucumber は Rails プロジェクト以外でも利用されているようで、範囲が広いです。もうちょっといろんな情報がWeb上に流れていても良い気がします。 私が知る限りでは Cucumber についてもっと詳しく書かれているのは The Rspec Book です。 前置きはさておき、 Cucumber の *.feature は Gherkin という 言語で書きます。 その文法について調べたので

  • ブラウザテストツール総まとめ・2016年夏版 - Qiita

    GitHubのスターは2016年7月30日調べ。ただし、登場年によるバイアスが激しいので、この件に関してはあまり参考にならないですね...。 E2Eテストツール Nightwatch 総合的なE2Eテストツール。WebDriver実装(独自)と、アサーションライブラリが一体となっているのが、使いやすいような使いにくいような。 http://nightwatchjs.org/ https://github.com/nightwatchjs/nightwatch 書き方はこんな感じ。 module.exports = { 'Demo test Google' : function (client) { client .url('http://www.google.com') .waitForElementVisible('body', 1000) .assert.title('Google')

    ブラウザテストツール総まとめ・2016年夏版 - Qiita
    akatakun
    akatakun 2016/08/01
    Javaを使いたくないというのが、主な理由ですね。フロントエンド系のツールの多くがNodeベースで作られるようになる中、この部分だけ未だにJavaを必要とします。
  • [翻訳+α] Rails/RSpec/Capybara/Seleniumでdatabase_cleaner gemを使う|TechRacho by BPS株式会社

    2014.05.28 [翻訳+α] Rails/RSpec/Capybara/Seleniumでdatabase_cleaner gemを使う こんにちは、hachi8833です。 Rails 4.1.1環境でなぜかPoltergeistでスクリーンショットを保存できない問題が解決したら記事にしようと思っていたのですが、間に合わなかったので今回はConfiguring database_cleaner with Rails, RSpec, Capybara and Seleniumという記事を翻訳してみました。 なお、この記事の内容は、弊社で行った「Crafting Rails 4 Applications読み会:第8回資料」と密接に関連します(スライド47 - 53ページあたり)。 解説 RSpecの1つ1つのテスト(beforeとafterも含めて1つの単位とします)は来互いに独立す

    [翻訳+α] Rails/RSpec/Capybara/Seleniumでdatabase_cleaner gemを使う|TechRacho by BPS株式会社