タグ

testに関するrochefortのブックマーク (74)

  • (自分の) JavaScript のユニットテストの書き方

    (社内用ドキュメントの公開版) テストのポリシー 前提として、ユニットテストを導入するコストを、限界まで低くすることを目指す。テストが根付いていない言語環境や文化では、放っておくとテストが書かれないまま実装が進行し、結果としてテスト不可能な巨大な雪だるまが完成する。こうなるとメンテコストが高いE2Eを大量に書かないといけなくなり、テストの実行時間が膨れ上がっていく。 そうなる前に、ユニットテストを書きやすい環境を維持し、ユニットテストとして問題を切り分けられるような環境を維持する。とにかく書きやすさを重視し、一つのユニットテストを書くオーバーヘッドを限界まで下げる。 最初の一つを早い段階で書く 自分の経験的には、ユニットとテストの最初の一つを書いたらあとは自然とその周辺で増えていく。サンプルがあったら人はコピペする。逆にいうと最初の一つを書かない限り一切書かれない。まず一つ用意するのが大事

    (自分の) JavaScript のユニットテストの書き方
    rochefort
    rochefort 2022/03/22
    良い
  • Angular8 ユニットテストが動かねぇ! - Qiita

    この記事は Angular #2 Advent Calendar 2019 二日目の記事です。 こんにちは。カルテットコミュニケーションズ で働いている @ringtail003 です。プロダクションコードがきちんと動作しているのにユニットテストが書けない、動かないって事ありませんか?そんなハマりポイントを記事にしてみました。 この記事を書いた環境: node v12.13 @angular/cli 8.3.12 ngOnChange 動かないんですけど? サンプルコード https://github.com/ringtail003/angular-failed-test/tree/ng-on-changes コンポーネントクラスの ngOnChanges() でメンバ変数を更新しているケースです。 ブラウザでは ngOnChanges が実行されるのに、テスト環境では無言を貫き mess

    Angular8 ユニットテストが動かねぇ! - Qiita
    rochefort
    rochefort 2020/01/14
    ありがち
  • TS と Jest で Table Driven Test をする

    この記事はTypeScript Advent Calendar 2019の11日目の記事です。 Go を齧ったことのある方は馴染み深いと思うのですが、Table Driven Testing という手法があります。いきなり見せます: const table = [ [1, 1, 2], [1, 2, 3], [2, 1, 3], ]; test.each(table)('.add(%i, %i)', (a, b, expected) => { expect(a + b).toBe(expected); }); こんな感じで「テストケースひとつひとつを test(...) 等と記述するのではなく、引数と予期する結果を配列として持っておいてテストコードの共通化を図る」手法です。同じ関数に関して書かなければならないテストケースが多い場合に、ごちゃごちゃしがちなテストコードをすっきりさせることがで

    rochefort
    rochefort 2019/12/28
    parameterized test
  • Spring Boot で DB アクセスまわりのテスト - Qiita

    Spring Boot に限った話ではないんだけど、今回 Spring Boot で書いたので、そんなタイトルに。 必要とされるシーンが多いわりに、意外と情報が少なかったので、まとめておきます。 DbSetup を使用するものと、DBUnit を使用するもの、それぞれを紹介します。 なお、今回はテストに Groovy Spock を使用します。 検証に使用したものを GitHub に公開しておいたので、こちらを確認しながら追いかけると、より理解しやすいかもしれません。 https://github.com/yo1000/com.yo1000.edu.boot.dbtest 環境 Java 1.8.0_91 Maven 3.3.9 (Maven wrapper) Spring Boot 1.4.0.RELEASE Groovy 2.4.7 Spock 1.1-groovy-2.4-rc-1

    Spring Boot で DB アクセスまわりのテスト - Qiita
    rochefort
    rochefort 2018/08/14
    DbSetup, DBUnit
  • TestProf: Ruby/Railsの遅いテストを診断するgem(翻訳)|TechRacho by BPS株式会社

    はじめに テストを書くことは、特にRubyRailsのコミュニティにおいて開発の重要なプロセスですが、テストの完了に長時間を要するようにならないと、テストスイートのパフォーマンスを気にしない傾向があります。身に覚えがありませんか? 専用のテストプロファイラであるTestProfを用いて、Railsテストのパフォーマンスボトルネックを特定して修正する方法を学びましょう。 私はEvil Martiansに入社した最初の年から、さまざまなタイプのRailsアプリケーション(モノリス、モジュリス(モジュラー+モノリス)、APIのみ、Hotwireなど)に取り組んできました。これらのアプリケーションは、どれもテストスイートの速度面に改善の余地がまだまだ残されていました。 私はテスト高速化のヒントやノウハウを集めるようになり、最終的にそのノウハウをすべてTestProfという名のメタgemに盛り込み

    TestProf: Ruby/Railsの遅いテストを診断するgem(翻訳)|TechRacho by BPS株式会社
    rochefort
    rochefort 2017/11/06
    TestProf
  • Bashアプリケーションをテストする | POSTD

    以前、bashスクリプトをテストする仕事に取り組んだことがあります。最初、Pythonユニットテストを使うことにしましたが、プロジェクトに外部技術を持ち込むのは気が進みませんでした。そこで、仕方なく、悪名高い bash で書かれたテスト用フレームワークを使いました。 既存ソリューションの概要 手に入るソリューションを探してGoogle検索しましたが、選択肢はほんの少ししかありませんでした。そのうちいくつかについて、詳しく見ていきましょう。 重要になるのは、どんな基準でしょうか? 依存関係: bass のテスト用フレームワークを選ぶときに、 python 、 lua などのシステムパッケージも一緒に引きずり込むのは嫌ですね。 インストールの難しさ:継続的な開発の実装とTravis CIでの継続的な統合も仕事の1つだったので、私にとってインストールにかかる時間と手間数が妥当だということは、重要

    Bashアプリケーションをテストする | POSTD
  • テスト計画の立て方 - Qiita

    テスト計画をどう立てていくか、ふつうのシステムエンジニアにとって分かりやすく考えてみたいと思います。 テスト工程は、一番ざっくりした分類で単体テスト、結合テスト、システムテストに別れるのが一般的です。 この工程は、あくまでもV字モデルに対応したインプットがどの前工程で作られたものを検証するかの基準であって、実際にどういう観点をどういう手順でテストするか、はそれぞれのプロジェクトで計画します。それがテスト計画になっていきます。 しかし、ただの工程の話と、実際におこなうテストの内容の違いが分かっていないと、テスト計画何するものぞ状態になって、ろくなテストが実施されないことになりますし、そのようなプロジェクトも多く存在します。 テストの世界標準には、ISO/IEC/IEEE 29119があり、これを見るとテスト工程(Test Level/Phase)とテスト種別(Test Types)の組で、テ

    テスト計画の立て方 - Qiita
  • Elasticsearchを使ったテストを書くときにsleep 1するのはやめましょう - Bit Journey's Tech Blog

    井原(@ihara2525)です。 以前RSpecでElasticsearchを使ったテストを書くというエントリの中で、 before do Post.__elasticsearch__.create_index! force: true Post.__elasticsearch__.refresh_index! page Post.import # Wait test cluster to index the created objects sleep 1 end みたいなコードを書いていたのですが、いろいろと間違っていました。 まずimportがインデックスをつくってくれるので、 before Post.import # Wait test cluster to index the created objects sleep 1 do でOK。 そしてsleep 1しているのはここにも

    Elasticsearchを使ったテストを書くときにsleep 1するのはやめましょう - Bit Journey's Tech Blog
  • スローテスト刑事 (デカ)

    第74回 Ruby関西 勉強会 (https://rubykansai.doorkeeper.jp/events/49364)

    スローテスト刑事 (デカ)
  • ci-phpunit-test のスライドが良い - rochefort's blog

    Code igniter + ci phpunit-test model, controller, 404, monkey patch, db と ツボを押さえた良いスライドになっています。 MonkeyPatch オブジェクトの置き換えとして、 Mock を使うことで大体はカバーできるのですが PHPでは「オブジェクトじゃないので Mock が作れない問題」に遭遇します。 そんなときに使える MonkeyPatch 機能はとても強力です。 このスライド見るまで気づかなかったのですが、なんと定数にも使えます! PHPは定数の書き換えができなくて、テスト書くのを断念していた箇所があったのですが これ使えばよかったんですね。

    ci-phpunit-test のスライドが良い - rochefort's blog
  • generatedata.com

    generatedata.com: free, random test data generator

  • http://blog.inouetakuya.info/entry/2013/10/27/200111

    http://blog.inouetakuya.info/entry/2013/10/27/200111
  • 小さく始める JavaScript のテスト - Qiita

    書かないと怒られるし、書きたいとは思っているが、書くまでの敷居がやたらと高くなってしまった気がしている人へ。 最小のテスト 質的にテストを書くのにフレームワークはいらない。 assertion だけあればいい。 isomorphic にしたいなら、 node の assert モジュールすら使わず console.assert だけで書ける。 // assert function assert(actual, expected) { console.log('.'); console.assert(actual === expected, '\nact: ' + actual + '\nexp: ' + expected); } function TestSum() { assert(1+2, 3); } // exec TestSum(); あとは普通にこのスクリプトを node/io

    小さく始める JavaScript のテスト - Qiita
    rochefort
    rochefort 2015/03/25
    mocha / karma
  • レガシーコード改善勉強会 開催レポート

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog ヤフー株式会社の有地です。 9/27(土)の昼から6時間にもわたり、さまざまな視点から「レガシーコード」について知識を深めるための勉強会を開催いたしました。 「そもそも正しい仕様を知っている人がいない」 「システムのブラックボックス化が留まるところを知らない」 こんな不条理なレガシーコード(テストコードが無いコード)と日々戦うエンジニアも多いことと思います。 今あるレガシーコードをどうやって保守・改善していけばよいのかという課題に気で取り組んでいる、または取り組みたいと考えている大勢の方々に参加していただきました。 <開催趣旨・目的> テストコードが無いプロダクションコードをレガシーコードと定義し、テストコードによって保護され、

    レガシーコード改善勉強会 開催レポート
  • iOSアプリデザインリニューアルの舞台裏の舞台裏 - クックパッド開発者ブログ

    技術部の松尾(@Kazu_cocoa)です。 iOSアプリデザインリニューアルの舞台裏でも書かれていた、" 修正期間中は毎日夜間にアプリケーションの全画面のスクリーンショットを記録するスクリプトを実行し、画面崩れが起きてないか、新デザイン未反映の画面はないか、進捗状況の確認に利用していました。"の舞台裏を少し書いてみようと思います。 はじめに モバイルアプリケーションのテスト環境はまだまだ成長中で、様々なツールが飛び交っていることかと思います。ここでは、E2Eテストに対しての話題に絞り、使っているツール、シナリオの書き方、クックパッドでは、という話しをします。この記事におけるE2Eテストは、UIからの操作によりユーザの操作を模倣して実施するテスト、という意味合いです。 ツール E2Eテストを自動化する為のツールの選定には以下を気にしていました。 OSの更新に追従できそうなもの 特別なテスト

    iOSアプリデザインリニューアルの舞台裏の舞台裏 - クックパッド開発者ブログ
  • Redirecting... · objc.io

    objc.io publishes books, videos, and articles on advanced techniques for iOS and macOS development.

    rochefort
    rochefort 2014/08/13
    - (id)autoVerifiedMockForClass:(Class)aClass; - (id)autoVerifiedPartialMockForObject:(id)object;
  • FBSnapshotTestCaseでUIViewの描画をテストする – blog.yujinakayama.me

    先日、iOS 7のMusic.app内の再生状態インジケータのクローンなビュー、NAKPlaybackIndicatorViewを作りました。 このプロジェクトでは、ビューが期待通りに描画できているかのテストにFBSnapshotTestCaseというものを使っています。 FBSnapshotTestCaseとは FBSnapshotTestCaseは、 Facebookによる、ビューの“snapshot test”ライブラリです。 “snapshot test”とは、テスト対象のUIViewまたはCALayerに表示されたコンテンツのスナップショットを撮り、 事前に用意しておいた“reference image”(PNG画像)と同一かどうかをピクセルレベルでチェックすることで、 将来の予期しない表示崩れを検出するものです。 FBSnapshotTestCaseはXCTestCaseのサブ

    FBSnapshotTestCaseでUIViewの描画をテストする – blog.yujinakayama.me
  • TDDは死んだ。テスティングよ栄えよ。 by DHH | 2014-04-24 - やっとむでぽん

    DHHの"TDD is dead. Long live testing."を、訳してみました。 翻訳 やっとむ By David Heinemeier Hansson on April 23, 2014 著 David Heinemeier Hansson 2014年4月23日 Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming. テストファースト原理主義は禁欲のみを唱えた性教育のようなものだ。つまり、自己嫌悪に陥っている人に向けた、非現実的で効果のない、道徳教育のようなものだ。 It didn't start out like that. When I first disco

    TDDは死んだ。テスティングよ栄えよ。 by DHH | 2014-04-24 - やっとむでぽん
    rochefort
    rochefort 2014/04/25
    これは有り難い。最初のパラグラフが難しく読むのをためらっていた。
  • [ruby][rails]テストの時にTime.nowで好きな時間を使えるようにするMock - よしだメモ

    class AgentTest < Test::Unit::TestCase def test_notice Time.class_eval do class << self alias_method :real_now, :now end def self.mock_now @current_time end def self.mock!(time) class << Time; alias_method :now, :mock_now; end @current_time = time yield class << Time; alias_method :now, :real_now; end end end Time.mock!(Time.parse("2007-10-10 11:11:11")) do assert_equal "2007-10-10", Agent.notice[

    [ruby][rails]テストの時にTime.nowで好きな時間を使えるようにするMock - よしだメモ
    rochefort
    rochefort 2014/04/01
    Time.now
  • iOSアプリのテスト自動化本を執筆しました - やらなイカ?

    まだ校正中なのですが、iOSアプリのテスト自動化入門(仮)的な*1タイトルのを執筆しました。秀和システムさんから3月中旬ごろ発売予定です。 iOSアプリ テスト自動化入門 作者: 長谷川孝二出版社/メーカー: 秀和システム発売日: 2014/03/18メディア: 単行この商品を含むブログ (1件) を見る 【3/7追記】Amazonさんで予約はじまりましたのでリンク追加しました 昨年Androidテスト部で書いた『Androidアプリテスト技法』は、テスト技法とテスト自動化が半々という構成でしたが、書はほぼテスト自動化について特化した一冊です。 内容、想定読者 Xcode 5・iOS 7環境*2における、ユニットテストの書きかた、システムテスト〜受け入れテスト向けのツール・フレームワークのほか、ビルドやAdHoc配布の自動化、CI、メトリック(メトリクス)採取など、アプリ開発にまつわ

    iOSアプリのテスト自動化本を執筆しました - やらなイカ?
    rochefort
    rochefort 2014/02/15
    これは期待大