Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Скоростное тестирование Rails / Александр Балашов (Evrone)

861 views

Published on

  • Be the first to comment

Скоростное тестирование Rails / Александр Балашов (Evrone)

  1. 1. Тестирование. Скорость.Александр Балашов / Evrone
  2. 2. Загрузка приложения1
  3. 3. (при реальном количестве гемов)
  4. 4. Группы в Gemfile=> 3сgroup :testgroup :developmentgroup :production
  5. 5. :development•hirb•wirble•bullet•migration_opener•letter_opener•capistrano•quiet_assets•capistrano-nc•localeapp•dev_log_in
  6. 6. :test•fakeweb•timecop•database_cleaner•launchy•zonebie
  7. 7. :production•newrelic_rpm
  8. 8. Lazy require=> 3сgem savon, require: falserequire savongem ‘paper_trail’, require: falsegem whenever, require: false
  9. 9. Почистить Gemfile
  10. 10. Редко используемые# gem ‘debugger’# gem ‘ruby-prof’
  11. 11. Время выполнения2
  12. 12. Finished in 15 minutes 12.9 seconds1589 examples, 0 failures, 0 pending
  13. 13. Статистика FactoryGirlUSER — 1m 36create: 3425
  14. 14. •до 2 мин на создание одной фабрики•несколько тысяч вызовов каждой•7 фабрик с временем минута и более
  15. 15. Время FactoryGirl50%
  16. 16. FactoryGirl.create(:user)Когда реально нужно учитывать состояние БД
  17. 17. FactoryGirl.build(:user)Реально создаёт объекты в БД
  18. 18. User.new•Простые валидации•Методы не связанные с БД
  19. 19. stub_model(User)•Быстро работает•Независимость тестов•Подходит для spec/services/*•Подходит для spec/mailers/*
  20. 20. FactoryGirl Seeds
  21. 21. Вложенные фабрики=> 2минrating < comment < post < user < city
  22. 22. factory :keyword doproject { seed(:project) }user { project.user }
  23. 23. Стандартные фабрикиcomment = create(:comment)
  24. 24. Finished in 10 minutes 42.38 seconds1556 examples, 0 failures, 0 pending
  25. 25. (10 * 60 + 42) / (15 * 60 + 13) =2x
  26. 26. Запуск тестов3
  27. 27. Spork
  28. 28. Spinspin servespin push spec/models/user_spec.rb:12
  29. 29. Zeuszeus startzeus test spec/models/user_spec.rb:12
  30. 30. Springspring rspec spec/models/user_spec.rb:12
  31. 31. alias rg=spring rails galias rs=spring rails salias rc=spring rails c
  32. 32. rails/commandsrails console test> test "models/user"
  33. 33. rspec-consolerspec spec/models/user_spec.rb:13
  34. 34. Приёмы в спеках4
  35. 35. valid? вместо save
  36. 36. много it при объёмном before
  37. 37. slow: true(требует CI-сервера)# .rspec--tag ~slow --tag ~stable
  38. 38. stable: true(требует CI-сервера)
  39. 39. Rails.logger.level = Logger::WARN
  40. 40. Devise.stretches = 1
  41. 41. Top 10 slowest examples# .rspec-p
  42. 42. Повсеместный Useruser = create(:user)
  43. 43. Finished in 2 minutes 38.91 seconds893 examples, 0 failures, 0 pending
  44. 44. (15 * 60 + 13) / (2 * 60 + 38) =6x

×