タグ

ブックマーク / blog.lai.so (6)

  • 無法地帯にテストケースを追加する時にいつもやっている戦略 - laiso

    数年開発続いてるけどテスト全くないみたいなよくあるコードベースを想定。 不具合を修正する時についでにリファクタリングしてドメイン層のテストを書く。 手動テストで不具合を再現 ViewからロジックをControllerへ移動し、Viewからは値の参照のみにする 移動したロジックをController内でプライベートメソッドに切り出す。返り値を(2)の値にセットする プライベートメソッドを外に出して関数→モジュール化する (4)のメソッドに対してテストを書き、失敗するのを確認する ポイントとしては 運用的観点ではなるべく早く不具合を修正してデプロイしたいので、リファクタリングだけ別のブランチでゆっくりやる 依存がでか過ぎで解決できなさそうなど問題があれば、その時点ではテストを書くのを諦める。行動したことで学んだIssueを起票する 具体的なリファクタリング方法は レガシーコード改善ガイド (O

    無法地帯にテストケースを追加する時にいつもやっている戦略 - laiso
    kimihito
    kimihito 2018/03/08
  • Chrome拡張開発のユニットテスト事情 - laiso

    ちょっと前から検索しているけど、あんまりこの話題活発ではない。FirefoxやOperaのAdd-onsやExtensionsはどんな感じなんでしょうか。 おおまかに以下の2パターンのアプローチがある。 (1) Chrome拡張独自のAPIをモック化してブラウザやコマンドラインから独立したテストを実行できるようにする Testing Chrome Extensions with Jasmine - Roberto Soares Chrome Extension API のモック化+jasmine-spyでテスト require.js を使ってbackgroundscriptやcontentscriptをテスト時に動的に読み込む。 chrome.extention 以下をモック化しているのでテストがブラウザに依存しなく実行できる(コマンドライン、CI) ソースコード: gist-io-chr

    Chrome拡張開発のユニットテスト事情 - laiso
    kimihito
    kimihito 2013/10/03
  • Google+モバイルアプリ開発チームのテスト戦略 - laiso+iphone

    How the Google+ Team Tests Mobile Apps*1 を3行でまとめるブログ。 ユニットテスト iOS SDK標準のOCUnit(SenTestingKit)を使う Google Toolbox for Mac付属のGTMSenTestcaseクラスもいい。 次のSDKからSenTestingKitは外れるらしいんだけど代替のアップル製のテストフレームワークはSenTestingKitAPIと互換性がある代替APIがあるというので使い方の意識する必要はなさそう。OCUnitはもともと個人開発者が公開してた昔からある秘伝のソースだからたぶん中身をモダーンに書き直したんじゃないかなーと勝手に予想してる。 GTMは正直iOS開発じゃもうそんなに使わんだろと言っていたけど結構メンテされてるし今度見てみます。 https://code.google.com/p/goog

    Google+モバイルアプリ開発チームのテスト戦略 - laiso+iphone
    kimihito
    kimihito 2013/09/30
  • モバイルアプリのバックエンド(Web API)に特化したサービスのまとめ - laiso

    最近乱立している「モバイルアプリのバックエンド(Web API)に特化したサービス」に興味があったので、いろいろ試してみた。 「モバイルアプリのバックエンド(Web API)に特化したサービス」と書いたけど、まだまだそんなに一般的ではないのでBaaS(Backend as a Service)とかCloud Hosting とかいろんな呼ばれ方をしている && サービスによって提供する領域も違う。まあとくに定義はしないので気になったらその都度公式のヘルプでも読んでみて。稿では呼びやすいのでBaaS と表記します。 BaaS とは? 最初に後程も紹介するdonayama さんのCocoafish の紹介エントリの一節がわかりやすいと思ったので引用します おそらくどのようなサービスであっても「ユーザ管理」をすると思いますが、ひとことにユーザ管理といっても、(場合によっては招待状による招待→)

    kimihito
    kimihito 2013/08/26
  • プログラマが体験するべき○つのこと - laiso

    プログラミングはそれ自体が目的であっていい - mizchi log 大事なのは、いくつ地雷を踏んだか、だ。地雷を踏んだ数だけ強く慣れる。真に必要なのは、独力での問題解決能力。Python2系でsjisのHTMLをlxmlでスクレーピングすると、地雷を7つぐらい同時に踏めるからおすすめだ。 僕もまあそれなりに手を出しているのだけど、他の人も抑えるべきだと思った概念は、次のものだ。 Haskellにおける入出力IOと副作用の概念 HaskellのMaybe, またはScalaのOption型 Scalaのtrait Node.jsの非同期Promiseパターン C#のgetter/setter/readonly/async等の型アノテーション 題にはあんまり興味がなかったんだけどこの部分がおもしろかったのでイッチョカミしたい。 成功体験の共有とまではいかないけど、こういう「これはやってよか

    プログラマが体験するべき○つのこと - laiso
    kimihito
    kimihito 2013/05/18
    プログラマが体験するべき○つのこと - laiso
  • 最近のウェブ系スタートアップが採用しているプログラミング言語やフレームワークまとめ - laiso

    http://www.quora.com/Node-js-Ruby-Python-who-wins-in-5-years を読んでて「勝利条件としてより多くの”スタートアップ”に選択されること」という話がでてたけど、そもそも今は何が採用されているのか状況がよくわかたっていなかったので調べた。 スタートアップ? 一般(自分の周辺)に「ウェブサービス」みたいな呼称されているもの。消費者向けというかなんというか、企業向けシステムとか、ソーシャルゲーム単品とかは含めないことにした なんでスタートアップ?(小規模な企業) 企業が大きくなってくると、いろんな領域で必要なことがあってこの企業は→このプログラミング言語みたいなひもづけができなくなるので 項目は =企業ではなく=サービスでわけた 順番、国内外は適当。できるだけ知名度のありそうなサイトを選んだ いわゆるサーバーサイドのアーキテクチャの話(それ

    最近のウェブ系スタートアップが採用しているプログラミング言語やフレームワークまとめ - laiso
  • 1