Rails のテスト実行時間を60分から6分に短縮するまで - SmartHR Tech Blog
1. Copyright© 2017 Yahoo Japan Corporation. All Rights Reserved. 2017年8月30日 ヤフー株式会社 山口 鉄平 開発とテストが一体となった ソフトウェア開発
ExampleThatLogs.java �C� �U `W� �U package com.brs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Simple class that we use to trigger a log statement. */ public class ExampleThatLogs { private static final Logger LOG = LoggerFactory.getLogger(ExampleThatLogs.class); public String concat(String a, String b) { LOG.info("String a:" + a + ", String b:" + b); return a+b; } } ExampleTha
はじめに AWSでは負荷テストを実施する際に事前申請は不要でしたが、 意図した負荷であってもトラフィック量によってはDoS/DDosとして検知されネットワークが遮断されることがありました。 そこでネットワーク遮断の回避の方法や負荷テストの可否について、 AWSへ確認しましたところ現在は負荷テストを行う際は実施前に承認を受ける必要があることがわかりました。 英文 (AWSより) All AWS users are required to receive approval before any load testing. Please send detailed plans of the testing including expected peak bandwidth to the simulated events email address listed on the AWS Penetr
テストを書いていると、マルチスレッドでデータベースを参照したくなることがあります。 たとえば Capybaraなどによるヘッドレステストを行いたい データベースのロック確認 複数スレッドでの同時アクセス時の動作 などです。 課題 しかしながら、通常、テスト中のデータベース操作はトランザクション内で行われ、コミットされません。 このため、メインスレッドで行ったデータベース操作は、他のスレッドでは参照できず、テストに失敗します。 こんなときは、 # config.use_transactional_fixtures = true config.use_transactional_fixtures = false としてた上でconfig.after(:each)(あるいはDatabaseCleanerで)データベースを空にするのが定番のやりかたです。 フィクスチャ制御にトランザクションを使わな
笠原 辰仁 本記事は2013年のPostgreSQL Advent Calendar の 12/25 の記事です(地味なトピックになってしまいすいません)。PostgreSQLでのテストデータ作成に役立つ機能を紹介します。 はじめに PostgreSQLを対象としたの性能検証や機能検証を行う際に、開発環境や試験環境でスキーマ(テーブルやインデックス)を作成し、ダミーのデータを投入してSQLのチェックを行うことが多々あるかと思います。単純な機能の正常試験であれば少量のデータ投入で事足りると思いますが、大量のデータに対する検索処理やバッチ処理を試す際は、それなりの量の試験データを生成し、DBに投入する必要があります。 通常、試験データは、例えば専用のジェネレータを作る、実際のデータをマスキングしたものを使う、サンプルとして存在するデータ(郵便番号のデータなど)を利用する、といったことが多いと思
自動改札機の運賃計算プログラムはいかにデバッグされているのか? 10の40乗という運賃パターンのテスト方法を開発者が解説(前編) ふだん何気なく使っている鉄道。改札を降りるときにICカードを自動改札にかざすと、「ピッ」という音と共に一瞬のうちに運賃を計算してくれます。けれど、複数の路線を乗り継いだり、途中で定期券区間が挟まっていたりと、想像しただけでもそこには膨大な組み合わせがあります。それでも運賃計算プログラムはわずか一瞬で正しい運賃計算が求められ、バグがあったら社会的な一大事にもつながりかねません。 爆発的な計算結果の組み合わせがあるはずの運賃計算プログラムは、どうやってデバッグされ、品質を維持しているのでしょうか? 9月12日から14日のあいだ、東洋大学 白山キャンパスで開催された日本科学技術連盟主催の「ソフトウェア品質シンポジウム 2012」。オムロンソーシアルソリューションズ 幡
負荷ツールとしてGatlingのことを少し前から耳にする機会が増えたので、利用してみることにした。 色々既出だとは思うが、公式のQuickstartに従って試してみたのでメモ。 GUIが必要だったので、今回は手元のMacで実行。 Gatlingとは Java/Scala製の負荷テストツール。 JMaterと似た感じのツールではあるが、 ハイパフォーマンス 見やすいレポートHTML developerフレンドリーなシナリオファイル というのをウリとして謳っている。 たぶん、3項目とも対JMater(重い・レポート見づらい・XMLのシナリオつらい)を意識したメリットだろうなー。 なお、シナリオファイルは。。。 Gatling simulation scripts are written in Scala, but don’t panic! わろた。 というわけで、触ってみる Install J
組合せテストツールのPICTの解説で、表題についてよく聞かれるのでメモ。 PICTについては、専用のバイナリファイルで配布されていたこともあり、今までWindowsで使用されてきた。 ただ去年からGithubでオープンソース化され、gccやclangで自由にビルドできるようになった。それに伴い、MacやLinuxでもWindowsと同じぐらい手軽に利用できるようになっている。 あえて言うまでもないかもしれないが、導入方法は以下の通り。最近のgccやclangが使え、makeできる環境であれば、OSは問わない。 「https://github.com/Microsoft/pict」にて、Download ZIPからファイルダウンロード、解凍 解答したディレクトリで「make」実行。同ディレクトリにバイナリpictができる。 使用例 このディレクトリに、例えば以下のようなファイルsample.
この記事はVOYAGE GROUP エンジニアブログ Advent Calendar 2014の6日目の記事です。 こんにちは、VOYAGE GROUPで片手間データサイエンティスト業に従事している@hagino3000です。 昨今のBigQueryムーブメントに乗って、分析用のデータをBigQueryに投入しはじめた方も多いと思います。しかし、BigQueryを使い出すと、集計バッチ等のテストコードがローカル環境で完結しなくなり、BigQueryそのものを参照したくなります。本記事ではいくつかのアプローチを紹介します。 サンプルコードはPython + nose + BigQuery-Pythonを使っています。 何が問題か 何故テストコードで悩むかというと、BigQueryは次の2つの特徴を持つから。 ローカル環境が作れない 少量のデータでもクエリに5秒程度かかる 特にクエリに時間がか
同値分割とは 同値分割は、さまざまなテストフェーズで利用できるブラックボックステスト技法の一つです。テスト結果(ソフトウェアの振る舞い)をグループ分けし、それぞれのテスト結果になる代表的なテスト条件を選択してテストします。言い換えれば、すべてのテストをするのではなく代表的なテストをすればよい、という考え方です。一般的にはテスト技法の基礎といわれています。 本来はテスト結果(数学的な表現をすると値域)に着目するテスト技法ですが、ここではテスト条件(数学的な表現をすると定義域)に着目する方法を解説します。 同値分割は大きく5つの作業に分けられます。 同値クラスを作る 同値クラスを分類する 代表値を決定する テスト条件を決定する テスト条件を見直す 5つの作業を解説するために、以下のような入力フォームのテストを考えてみましょう。 メールアドレスは「ローカルパート@ドメインパート」で構成される。
受け入れテストのフレームワークである Turnip のざっくりとした利用方法を掴むために超意訳してみました。参考までに、関連する記事も貼っておきます。 jnicklas/turnip Rubyist Magazine - エンドツーエンドテストの自動化は Cucumber から Turnip へ Turnip "turnip" - 記事一覧 - Thanks Driven Life Rspec/Capybara/Turnipの入門記事を全力でまとめてみた - 酒と泪とRubyとRailsと Turnip は、RSpec の為の Gherkin 拡張です。RSpec 環境にて、Gherkin でテストを記述して実行することが可能です。基本的には、RSpec で Cucumber フィーチャを記述することが可能です。 インストール gem をインストールします。
まとめ テストの「カバレッジ」には、C0, C1, C2の3レベルが存在する 一般的なカバレッジ測定ツールはC0しか測定できない C0だろうがC2だろうが、カバレッジは目安にしかならない とはいえ、他に目安になる物は何もないので、見ないよりは見た方がいい 序 しばらく前のShibuya.js*1が面白そうだったので指をくわえながらIRCで後輩に一席ぶった「テストカバレッジの罠」について書いておくよ。 FizzBuzzのテスト 以下のようなコードを考えよう*2。 <?php function fizzbuzz($i){ $return = ''; if( $i % 3 === 0 ) $return .= 'Fizz'; if( $i % 5 === 0 ) $return .= 'Buzz'; if( $i % 3 !== 0 && $i % 5 !== 0 ) $return = $i;
(追記:slideshareにsplitまとめたので、良ければどうぞ。 http://www.slideshare.net/ryumatsukano/rails-ab-testing-by-split-gem ) splitというgemを使って ruby on rails3(3.1〜)で A/B testするまで。 ※ちょっとお酒が入っているので、 読み辛かったらすみません。。。 split https://github.com/andrew/split ※redisが必要 目次 今回のシチュエーション redisをlocal(mac)にinstall rails sampleを作成 A/B testを作成 ブラウザ確認 結果の確認 今回のシチュエーション scaffoldで作った画面の、 「新規作成」リンクを以下2パターン悩んでいたとする。 パターンA:「NEWNEW!」リンクにするべき
以前 「【Railsで】Vanityのセットアップ【A/Bテスト】 」なんていうエントリを投稿しましたが、Vanityあまりメンテされてないし、Rails3対応が大変だし、なんか良くわかんなしということでやめてました。 そこでSplitの登場です。 現在進行形でメンテされていて、当然Rails3にも対応、何よりもRailsだけでなくて、Sinatraとかにも対応しているので、今後はこっちが主流になるでしょう。 ではさっそく。 Splitとは? これだ。 https://github.com/andrew/split redisが必要 READMEを読むと「ExtensionsにMongoid対応ありまっせ\(^o^)/」ってノリでリンクが貼られているが、正直おすすめしない。 このツールをフル活用したいのなら、素直にredisを利用することを推奨する。 インストールとセットアップ Rails
Copyright © 2004-2024 Impress Corporation. An Impress Group Company. All rights reserved.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く