SlideShare une entreprise Scribd logo
1  sur  36
1
Rubyのための
ビヘイビア駆動開発ツール
RSpec
シラサギでのRSpec運用例
2
自己紹介
名前:谷本 真治
所属:株式会社ウェブチップス
開発担当
3
2017年4月に
新入社員として入社しました
4
Rubyは難しいが、楽しい
5
徳島でOSS「シラサギ」の
開発をおこなっています
6
7
Webアプリケーション
開発プラットフォーム
8
MITライセンスのOSS
9
10
RSpecとは
ビヘイビアを記述するための
ドメイン特化言語を
提供するフレームワーク
11
Rubyプログラマーのための
ビヘイビア駆動開発ツール
12
13
specフォルダー
ディレクトリ 説明
factories ファクトリー
features 統合テストスペック
fixtures 非データベースのデータ
helpers ヘルパースペック
jobs ジョブスペック
lib ライブラリスペック
mailers メーラースペック
models モデルスペック
requests リクエストスペック
support ヘルパーメソッド
validators バリデータスペック
14
15
factories
テストデータを作成する
ファクトリーのフォルダー
16
factory :cms_user,
traits:[:cms_user_rand_name, :cms_user_uid, :cms_user_email]
def cms_user
cms_user = Cms::User.where(email: build(:cms_user).email).first
cms_user ||= create(:cms_user, group: cms_group, role: cms_role)
cms_user.in_password ||= "pass"
cms_user
end
17
CMSには
サイトのデータが必要
18
ファクトリーでテスト用の
データが作成できる
19
20
fixtures
非データベースのデータの
フォルダー
21
画像やCSVを用意
22
attach_file "item[in_file]",
"#{Rails.root}/spec/fixtures/cms/user/cms_users_1.csv"
23
画像を使用したテストが
できる
24
csvを使用したインポート、
エクスポートがテストできる
25
26
support
RSpecで使用する
ヘルパーメソッドの
フォルダー
27
def login_cms_user
login_user cms_user
end
def login_user(user)
visit sns_login_path
within "form" do
fill_in "item[email]", with: user.email
fill_in "item[password]", with: "pass"
click_button "ログイン"
end
end
28
サイトのテストデータを
何度も入力するのは大変
29
ヘルパーメソッドで
簡単に記述できる
30
31
:dbscope
データベースを初期化する
ヘルパーメソッドの
実行タイミングを設定
32
describe "article_pages", dbscope: :example, js: true do
33
オプション 説明
example テストを実行する毎にデータベースを
初期化します。
context spec ファイル毎にデータベースを初期化します。
context が規定値です。
34
データベースの初期化の
タイミングが変更できる
35
36
ご清聴
ありがとうございました。

Contenu connexe

Similaire à ライトニングトーク資料 OSC東京2017秋

Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
 
20131208 agile samuraibasecamp
20131208 agile samuraibasecamp20131208 agile samuraibasecamp
20131208 agile samuraibasecamp
Hiroshi SHIBATA
 
Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2editionRails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
Satomi Tsujita
 
IDEを目指す開発者コンソール
IDEを目指す開発者コンソールIDEを目指す開発者コンソール
IDEを目指す開発者コンソール
minoaw
 

Similaire à ライトニングトーク資料 OSC東京2017秋 (20)

Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Productive Organization with Ruby
Productive Organization with RubyProductive Organization with Ruby
Productive Organization with Ruby
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメ
 
ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析
 
20131208 agile samuraibasecamp
20131208 agile samuraibasecamp20131208 agile samuraibasecamp
20131208 agile samuraibasecamp
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2editionRails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
 
FiNC DDD第一回勉強会
FiNC DDD第一回勉強会FiNC DDD第一回勉強会
FiNC DDD第一回勉強会
 
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
 
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうかWebアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
IDEを目指す開発者コンソール
IDEを目指す開発者コンソールIDEを目指す開発者コンソール
IDEを目指す開発者コンソール
 
俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう
 
Works of site reliability engineer
Works of site reliability engineerWorks of site reliability engineer
Works of site reliability engineer
 
RESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxRESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptx
 

ライトニングトーク資料 OSC東京2017秋

Notes de l'éditeur

  1. 今回はRubyのためのビヘイビア駆動開発ツールであるRSpecとシラサギでのRSpec運用例について説明します。
  2. まずは自己紹介をします。
  3. 名前は谷本 真治です。 所属は株式会社ウェブチップスで、開発を担当しています。
  4. 2017年4月に新入社員として入社しました。
  5. 私はRubyを入社後に本格的に勉強しています。 Rubyは書くことは簡単ですが、きれいに書くことが難しいプログラミング言語です。 しかし、Rubyは使っていて楽しい言語です。 私はRubyのことをもっと勉強して立派なプログラマーになりたいと考えています。
  6. 私は徳島でオープンソースソフトウェアであるシラサギの開発をしています。
  7. RSpecの説明に入る前に、まずシラサギの特徴を簡単に説明します。
  8. シラサギはWebアプリケーション開発プラットフォームです。 シラサギの上にCMS、グループウェアなどのアプリケーションがあります。 そのため、CMS、グループウェアなどを同一システムで利用可能です。
  9. シラサギはMITライセンスのオープンソースソフトウェアです。 そのため、カスタマイズやフォークが可能です。 また、拡張機能を非公開にするという選択が可能です。
  10. それでは、本題であるRSpecの説明に入ります。
  11. RSpecはビヘイビアを記述するためのドメイン特化言語を提供するフレームワークです。
  12. RSpecはRubyプログラマーのためのビヘイビア駆動開発ツールです。 ビヘイビアとは振る舞いのことで、”このように動いてほしい”といった要求のことです。 RSpecは機能的に優れており、多くのRubyプログラマーが使用しています。
  13. シラサギではRSpecに関連するファイルをspecフォルダー以下に用意しています。
  14. Specフォルダーの中は検証したい項目を記述するスペックファイルのあるフォルダーや検証のためのテストデータを作成するフォルダーなどがあります。 今回はシラサギでのRSpec用のテストデータの作成例、運用例を中心に話したいと思います。
  15. まずは、factoriesフォルダーについて説明します。
  16. factoriesはテストデータを作成するファクトリーのフォルダーです。
  17. factoryの後にcms_test_userなどと記述することでテストデータを作成できるようになります。
  18. 例えばCMSの検証を実行したい場合、サイトのデータが必要です。
  19. シラサギではファクトリーでテスト用のデータを作成することで対応しています。
  20. 続いてfixturesフォルダーの説明をします。
  21. fixturesは非データベースのデータのフォルダーです。
  22. 非データベースのデータには画像やCSVなどがあげられます。
  23. fixtures以下のファイルのパスを記述することでデータを使用できます。
  24. シラサギでは画像を使用する機能があります。 fixturesを使用することで画像を使用したテストが実行できます。
  25. また、シラサギではCSVを使用してページなどのインポート、エクスポートを実行しています。 fixturesを使用することでCSVを使用したインポート、エクスポートのテストを実行できます。
  26. 続いて、supportフォルダーについて説明します。
  27. supportはRSpecで使用するヘルパーメソッドのフォルダーです。
  28. defのlogin_cms_userと記述することでlogin_cms_userというヘルパーメソッドを定義できます。
  29. CMSのテストにはサイトのテストデータを使用します。 テストごとに同じ内容のサイトのテストデータを何度も入力するのは大変です。
  30. シラサギでは、多用するテストデータをヘルパーメソッドで簡単に記述できるようになっております。
  31. 最後に、シラサギ独自に定義したRSpecのオプションであるdbscopeについて説明します。
  32. dbscopeはデータベースを初期化するヘルパーメソッドの実行タイミングを設定するオプションです。
  33. dbscopeのあとにexampleと記述することで、設定に応じたタイミングでデータベースを初期化します。
  34. exampleの場合、テストを実行するたびにデータベースを初期化します。 contextの場合、specファイルごとにデータベースを初期化します。
  35. シラサギではテストデータを使い回したくない場合や、逆に使い回したい場合があります。 このオプションによりデータベースの初期化のタイミングを変更することで対応できます。
  36. 以上で発表を終わります。 ご清聴ありがとうございました。