Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Test DesignTesting at GitLab is a first class citizen, not an afterthought. It’s important we consider the design of our tests as we do the design of our features. When implementing a feature, we think about developing the right capabilities the right way. This helps us narrow our scope to a manageable level. When implementing tests for a feature, we must think about developing the right tests, bu
RSpec のテストダブルで呼び出しているクラスやメソッドの変更を検出する方法についてまとめます。 スライド まずは Sandi Metz 氏の自動テストに関するスライドをご覧ください。 Verifying doubles スライドではテストダブルが実際にAPIと同期しているかチェックするためのライブラリ群が紹介されています。 RSpec3 からは該当機能が標準で取り込まれています。 relishapp.com 例えば、 RSpec 2 で double を利用していた箇所を RSpec 3 で instance_double, class_double 等を利用するように変更すると、 テストダブルの変更を検出してくれるようになります。 これにより該当クラスやメソッドの名前が変更された場合に変更を検出できるようになります。 さらに RSpec の設定値を変えることで検証範囲を変更することが
こんにちは。メルカリでQA-SETチームのマネージャ兼自動化エンジニアとして、スマホアプリのテスト自動化をぶりぶりしている@daipresentsです。 先日開催された Mercari Tech Conf 2017 において、自動テストのデモ展示を担当させていただきました。当日は多くの方にお越しいただき、スマホアプリの自動化への関心は大きいのかなぁと感じております。 この記事では、テスト自動化についてよく質問されたことをまとめてみたいと思います。どの現場も同じように悩んでおり、試行錯誤している点も似ていたので、ノウハウとして残れば幸いです。 Q. どんな技術をつかってアプリの自動化をしているのですか? A: AndroidはAppium(Ruby) を使っています。 Gemが豊富なので以下のようなGemを使って実装を効率化しています。 # Gemfile sample gem 'appiu
ほぼ表題の通りの内容で、Chrome拡張を作ってみた。 完成度としてはまだまだだけど、とりあえずざっくり触れる程度にはなったので公開した。 github.com chrome.google.com アイコン画像は、カピバラの写真を適当になぞって作った。 なんでこんなものを? Capybaraのテストコードを書くのが面倒だなって感じることが多かったのが1つの理由。 TDD的に、先にテストコードを書いていけるのが理想だな〜とは思うものの、Webアプリケーションの開発をしていると、現実には一度は画面から一通り確認して、その後にfeature specを書く流れが多いように感じる。 そしてCapybaraでfeature specを書こうと思うと、 「これはテキストじゃなくてIDで選択しないとダメか〜」 「あ〜、これはfindしてからsetしないといけないのか〜」 という感じで、スムーズに書けない
概要 画面操作とテストシナリオが疎結合にできるPageObjectデザインパターンを試したかったので、検索ワードにヒットする商品を自動購入するAmazonの自動購入処理を書きました。 参考ページをCapybaraに移植したものになります。 PageObjectデザインパターンとは 公式によるとPageObjectデザインパターンとは、以下だそうです。 ・The public methods represent the services that the page offers(publicメソッドは、ページが提供するサービスを表す) ・Try not to expose the the internals of the page (ページの内部を公開しないこと) ・Generally don’t make assertions (原則としてassertionを行わないこと) ・Method
はじめに 仕事で Rails を使わないピュアな Ruby のプロジェクトで開発をすることになり、RSpec のテストがパスするまでに少々はまったので、恥を忍んでまとめておきます。 RSpec を動かすまでの手順については、こちらのサイトの手順を参考にさせて頂きました。 qiita.com 環境 rbenv 1.0.0 ruby 2.3.0 事前準備 rbenv で ruby をインストールしておいて下さい。 ディレクトリ構成 今回作成するプロジェクトのディレクトリ構成です。 ソースコードは src 以下に、テストコードは sprc 以下に作成します。 rspec_sample ├── Gemfile ├── Gemfile.lock ├── src └── spec 初期設定 プロジェクトのディレクトリを作成し移動します。 ついでに、ソースを作成する src フォルダも作成しておきます。
Selenium + Capybara + RSpecで自動テストしてみる : 準備編Sun, 27 Nov 2016 06:02:34 GMTテスト Ruby Selenium RSpec Capybara 前回の記事でSelenium + Rubyでテストを始めてみるも 「これってブラウザの操作はできたけど、どのテストが通ったのかわからないんじゃね?」 と気づきました。その結果、タイトルの組み合わせでテストすることにしました。 2017/1/28 追記 この後にもいろいろやったんですけど、結局RSpecを使わずにMinitestに変更しました。 前書き CapybaraはSelenium(というかRubyのその他も含めたテスト関連の)ラッパーのようです。RSpecはRubyのテストフレームワークです。 なお、どのテストが通ったかどうか判断するだけだとCapybaraはいらないですが、生
はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第4回です。 今回はCapybaraを使ったフィーチャスペックについて説明します。 ただし、今までの記事とは異なり、フィーチャスペックのイロハよりも「Capybaraの使い方」に重点を置きます。 なぜなら、僕個人の経験からいって、フィーチャスペックで困るのは「このブラウザの操作って、どうやってコードで表現するの??」というケースが大半だからです。 それ以外は第1回~第3回の内容をそのまま応用できるので、特に「フィーチャスペックだから困る」ということはないと思います。 今回は説明する主な項目は以下の通りです。 フィーチャスペックの基本 ページの移動や画面のクリック、フォームの操作など 画面やフォームの検証 画面の操作や検証の応用テクニック その他
はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第2回です。 今回はRSpecのマッチャについて説明していきます。 第1回と同様、今回も「最低限これだけは」という内容に絞り込んで説明します。 使用頻度の少ないマイナーなマッチャ(注:僕基準)については説明しません。 具体的な項目は以下の通りです。 マッチャとは何か to / not_to / to_not eq be be_xxx be_truthy / be_falsey change + from / to / by 配列 + include raise_error be_within + of これからRSpecを始める人はもちろん、何度かRSpecに触れて「うーん、RSpecってわけわからん」となっている人もこの記事で再入門してみると
はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第3回です。 今回はRSpecのモックを使ったテストについて説明します。 これまでモックを全く使ったことがない人でもわかるように丁寧に説明していくつもりです。 また、これまでの回と同様、個人的に使用頻度が低いと思っている内容についてはバッサリ説明を省きます。 ただし、第1回や第2回に比べるとテストコードが少し複雑になって、仕組みや動きを想像するのがちょっと難しいかもしれません。 ぱっと頭に入ってこない場合はじっくり本文を読んだり、実際に自分で写経しながらコードを動かしたりするなどして、少し時間をかけながら理解するようにしてください。 今回は以下のような内容を説明します。 モックの基本的な使い方 モックを使った検証 モックでわざとエラーを発生させ
translations Documentation RSpecとはBDDで使う素晴らしいツールです。(BDDとはbehavior-driven developmentの略で方向性を人の読める仕様に沿って開発を行う開発方法論です。) ウェブで既に沢山の使い方や _何_ ができるかを説明したRSpecの書き込みを探せますが、RSpecで良いテストの作り方を説明した書き込みはなかなか探せません。 Better Specsは大抵のガイドラインの書いてない部分を集めようとしました。- これは開発者達の経験を通して学んだ方法です。 メソッドの説明をする 作成中のメソッドを明らかにしましょう。例えば、Ruby文書の規約ではクラスメソッドの名前には.(もしくは::)をインスタンスメソッドの名前には#を使っています。 bad
お知らせ Qiitaに「【アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法」という」記事を書きました。 qiita.com この記事はざっくりいうと、こんなRSpecのコードよりも、 describe 'キャンセル処理' do let(:user) { create :user } let(:reservation) { create :reservation, user: user, start_at: '2017-08-10 10:00'.in_time_zone } context '24時間前をすぎるとキャンセル料が発生する' do before do travel_to '2017-08-09 10:00'.in_time_zone reservation.cancel! end after { travel_bac
はじめに RSpecは難しい、よくわからない、といったコメントをときどき見かけます。 確かにちょっと独特な構文を持っていますし、機能も結構多いので「難しそう」と感じてしまう気持ちもわかります。 (構文については僕も最初見たときに「うげっ、なんか気持ちわるっ」と思った記憶がありますw) しかし、RSpecに限らずどんなフレームワークでも同じですが、慣れてしまえばスラスラ書けますし、実際僕自身は「RSpecって便利だな-」と思いながらテストコードを書いています。 そこでこの記事では、僕が考える「最低限ここだけを押さえていれば大丈夫!!」なRSpecの構文や、僕が普段よく使う便利な機能をまとめてみます。 具体的には以下のような構文や機能です。 describe / it / expect の役割 ネストした describe context の使い方 before の使い方 let / let!
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く