タグ

ブックマーク / prepro.wordpress.com (10)

  • 単体テストの品質分析に関する妄想(途中)

    (普段何気なくやってる事を整理しただけなので、別にたいしたことを書いている訳ではない) 単体テストで品質分析を行う場合、 プロダクトコードの検証 コードフォーマットに起因する問題分析 実施方法::CheckStyle,CPDなどを利用する(Javaの場合) 目的::読みやすいクリーンなコードを維持する事で、読み違いやミスなどを防止する。 フォーマット規約に反していないか、冗長なコードがないか、重複したコードがないかを検証する。 問題があった場合に、対象のコードに対応が必要かどうかを検討する。 プログラムコード構造に関する問題分析 実施方法::FindBugs,PMDなどを利用する。 目的::実装中の考慮漏れをコードの構成側から分析する。 構造上に潜在的に危険なコードがないか検証する。 問題があった場合は、問題の大きさを考慮して対応が必要かどうかを検討する。 ただし、これらのツールは問題の大

    単体テストの品質分析に関する妄想(途中)
  • Javaの正規表現で日本語のみを許す場合を考えてた

    とりあえず、Java1.6でUTF-8の場合に、 俗にいう日語(笑)?と英数だけ通したいなーと思って正規表現書いてた。 日語とか空白とか、句読点とか、空文字だけは駄目らしい。。 こんな感じでいいのか、かなり不安。 あとでテスト書こう…。 そういやCJKって中国語、日語、韓国語の頭文字だったんだね。 知らんかった。。。 /** 俗にいう日語???と半角英数のみを許可するPattern */ public static final String IN_JP_PATTERN = "^" // 行の先頭 // 空文字("")を許可 + "\\??|" // Unicodeブロックでひらがな // -> http://code.cside.com/3rdpage/jp/utf-8/Hiragana.html + "[\\p{InHiragana}|" // Unicodeブロックでカタカナ

    Javaの正規表現で日本語のみを許す場合を考えてた
    Nagise
    Nagise 2011/02/15
    ユーザ要望によっては記号とか入ってくるので結局難航する。使いたい文字≒日本語だが、イコールではないという
  • xDDについて考える3

    これは、前回の続きになります。 多層的にxDDを実践する 自分が考えるxDDの連携とは以下のような感じです。 また、こういった風にxDDを実践することの大きなメリットは、 Inputに対して最終的なOutputを早期に返せることだと思います。 ※ここでいうOutputは実装された成果物ではなく、要求を満たすテスト仕様のアウトラインのことです。 つまり、「こういう機能が欲しいんだ」というユーザ要望に対して、 「このような仕様で行きますよ」ではなく「この動作が問題なく通れば機能は問題ありませんね」 という方法を提示します。 個人的には、要求に対応するのは実装結果ではなくその要求を満たすテストと考えています(どっかの受け売り気がする)。 具体的な流れとしては以下のような感じです。 1.DDD どう組み込むかはまだはっきり見えていないのでTODOです… 2.SDD あるストーリ(機能要求)があった

    xDDについて考える3
    Nagise
    Nagise 2010/04/14
  • xDDについて考える2

    このエントリは前回の続きです。 xDDの背景 では、なぜこのような多様な駆動開発が提唱されているのでしょうか。 ひとつの理由としては、いくらTDDのみ実践して問題ないことを保障しても、 前提部分で問題があった場合に、テスト自体が意味がなくなることが多々あるためだと思います。 「うまく設計できた、実装は終わった、テストは問題ない、但し顧客が求めている機能ではなかった」 というケースですね。 つまり、駆動する基準(求めているもの)がシステムを作る上で流動的に変化していくことを 把握し対応出来ていないため、アジャイル的な方法にあわせてより大きいレベルでの 駆動が求められているようになってきているのではないでしょうか。 「求めているもの」、つまり設計時に何を考慮しテスト時に何を保証したいかは 実践アジャイルテストに『テストの四象限』というものが定義されています(以下の図参照)。 この図はテストを整

    xDDについて考える2
    Nagise
    Nagise 2010/04/14
  • 私が、分散バージョン管理を使おうと思ったただ一つの理由

    最近デビューしました。 たった一つの理由を挙げろといわれれば 今のプログラミング開発手法のマッチしているから に尽きる。 TDDやCIが良い例だと思う。 TDDの例 SVNの場合TDDのレッド⇒グリーン⇒リファクタリングのタイミングでコミットするには粒度が小さすぎる。 でもコミットしないと小さな不安が残る。だけど、コミットすると余計なリビジョンがかさむことになる。 分散バージョン管理であれば、レッド→グリーンになったタイミングでローカルブランチにコミット出来る。 そのあと、一つのTDD(設計工程)が終わった段階でまとめてメインブランチにpushする。 ※bazaarでのやり方がわからないんだけど(汗 自分で試行錯誤しているときは安心(グリーン)したタイミングでコミット。 で、ひと段落したらメインリポジトリへpushというのが自然な流れで実行できる。 CIの例 CIの場合に、SVNでよくやる

    私が、分散バージョン管理を使おうと思ったただ一つの理由
    Nagise
    Nagise 2010/04/14
    リポジトリの多階層化は確かにTDDとかとは相性がよさげ
  • xDDについて考える(その1)

    ※このブログはデブサミ後のTwitterで話題になっていた時に下書きしていたものをそのままUPしています。 先日TDDBootCamp北陸に参加して少し考えたところもあるのですが、それは別エントリに。 最近xDD(???-driven development)という言葉が色々取り上げらています。 TDD(Test-driven development) BDD(Behavior-driven development) SDD(story-driven development) DDD(Domain-driven development) ※ここでTiDD(Ticket-driven development)のような技法を含んでいないのは、ちょっと方向性が違うかなと思ったためです。 デブサミでも話題になったそうで、Twitter上でも色々議論が流れているようですが、 ちょっといま忙しくてほと

    xDDについて考える(その1)
    Nagise
    Nagise 2010/03/17
  • JavaWebStartの仕様?とバグでどつぼった

    JavaWebStartの件で質問を受けていて調査していたんだけど、 Javaのコンボ攻撃をらって、ピヨピヨしていたので書いておきます。ピヨピヨ… JavaWebStartのショートカット作成の挙動 JavaWebStartをWeb上のリンクから初めて起動した場合に、インストールプロセスが走ります。 同時に、設定によってショートカットが作成(あるいは作成するか確認)されます。 その後、ショートカットのみを削除します。 そうしてもう一度、Web上のリンクから起動を行います。 すると(おそらく)インストールプロセスが走らずにローカルアプリの起動処理が走るみたいです。 # これって、JavaのコントロールパネルからJavaWebStartアプリをインストールしても、 # 削除済みリソースに残りますよね。こっちの場合はどうなるんだろ(未確認) JavaのUpdateの挙動 Javaのruntim

    JavaWebStartの仕様?とバグでどつぼった
    Nagise
    Nagise 2010/03/03
    ショートカットがずっと作られなくなってはまるのか。なんか嫌だな。
  • 私がJavaのバイトコードをJavassistで操作する時

    最近、既存コードのテストコードを書きまくっています。 その中で、Easymock(classExtension)などを用いてMock化している場合に、 finalクラスをMock化できず困っていました。 何かいい方法がないかなと思っていたらhudsonの開発者である川口さんが jaavassistを利用してfinalを除去しているという記事があり、 なるほどと思って自分もその方向で対応を行うことにしました。 その際に「なぜテストを書くのか」「どうしてそんな書き方をするのか」 ということを色々考えていたので、簡単に脳みそを整理してみます。 バイトコードが使われるとき 主にフレームワーク内部やIDEで利用されている技術と聞いています。 つまり大多数の一般的な開発者には使われないという認識です。 なぜテストにおいてバイトコード操作やリフレクションを使うのか 私の主観としては、リフレクションやバイ

    私がJavaのバイトコードをJavassistで操作する時
    Nagise
    Nagise 2010/01/29
    Javassistでfinal除去か。なるほどねえ。
  • Tracの任意のWikiページをPDF出力するスクリプトを作ったよ(暫定版)

    TracのPDF出力する方法は、以前の記事でも述べたようにいくつかあります。 が、その中で唯一日語に対応しているTracWikiExportプラグインは、 残念な事にテーブル内に日語構成が含まれていた場合にテーブル構造が崩れたり、 {{{#!html}}} を正しく解釈できないという微妙な問題を含んでいます。 それで困っていたので、簡単にJavaPDF出力ライブラリのiText5を利用して作ってみました。 サラッと作っただけでまだバグバグですが、コアとなるJavaの部分だけ晒しておきます。 launchpad.netにあげているので、ここからダウンロードできます。 目標としてはAdobeAirを利用したプレビュー機能&ダウンロード機能をつけたいですね。 ちなみに、プラグインとして作らずにAPIを利用して別アプリとして作ったのは、 PDF出力する状況を考えるとTrac上にプラグインとし

    Tracの任意のWikiページをPDF出力するスクリプトを作ったよ(暫定版)
    Nagise
    Nagise 2010/01/08
    ネットワーク的に直接参照できないケースで必要になるんだろうね。ビジネス用途では必要になる機能性に思う
  • Wordで差分管理するのは現実的?

    @coelacanthが書いた記事が興味深かったのでトラックバック。 差分が取れないというのはもちろんですが、仕様書やチャートなどをバージョン管理することの効果は大きいですよね。 周りの人に聞くと、あんまり賛同してれる人もいない・・・。 あらま、自分は一応やっている派です。 WordではなくWikiですが。 wordを利用した場合の解決策 Wordで履歴管理しようとすると選択肢が限定されてくるように感じます。 思いつくのは、以下の方法(実際に全て検証しているわけではありません)。 Word自身のdiff/履歴管理機能を使う(Diff:ツール→文書の比較と反映) 履歴管理に関しては、Word内部で独自管理されるのでリビジョンの意味がなくなってしまうので、バージョン管理システムと相性が悪いように感じる。 xdocdiffを利用する(Windows限定) ローカルだけではなくTracやRedmi

    Wordで差分管理するのは現実的?
    Nagise
    Nagise 2009/12/19
    バイナリ系のデータはみんな差分管理に苦労する
  • 1