2014/12/09 に DeNA 社内勉強会にお招きいただいて話した内容です
TDDBC 福岡2でのTDDの失敗ケースとは何かという質疑応答から。 テストコードにもリファクタリングが必要 昔はテストコードがメンテ対象であるという意識が薄かった 見てすぐ分かるテストコードがよいという考えからコピペコードが非常に多かった テストコードがたくさんあることによって動きが取りづらくなり、変更コストも上がる 素早く動きたいがためにTDDしているのにそんな皮肉な結果になってしまう たくさん書くのではなく必要十分書くことが大切 書き散らすと「テストケース爆発」を起こす テストコードもメンテし続けるためにリファクタリングして行く必要がある テストコードもプロダクトコードと同じようにテストのGreenの状態が維持されていることで、既存のコードが壊れないことを保証しつつリファクタリングしていくことができる。 (ただしテストが無条件でオールグリーンになるみたいな酷い壊し方をしてしまう心配は
3. 自己紹介 • 井芹洋輝(いせりひろき) • 扱っているもの – 組込み開発/ソフトウェアテスト/開発者テスト • 所属 – WACATE実行委員/TDD研究会/ATECなど • 対外活動 – JaSST’11 Tokyo/WACATE2011冬/Androidテスト祭り等 – ソフトウェアテストPRESS総集編/Ultimate agile Stories
「テストコードのリファクタリング - 千里霧中」の続きです。 十分に実施できる方法 テストコードを対象としたリファクタリングの回帰テストについてですが、現実性があり、十分に実施できる方法は主に次の2つとなると思います。 テストコードのインプットとなるテストケース仕様にもとづいて、ミューテーション分析を実施。ミューテーションテストと正常系のテストを実施することで、バグがなければパスし、バグがあれば失敗することを確認する。 テストコードに対する入出力・間接入力(テストフィクスチャからの入力など)・間接出力(Assertionメソッドへの出力等)を、Test Doubleやロギングで網羅的に記録。変更前と変更後で、入出力、間接入力・間接出力が変化しないことを確認する。 ただ現実性があるといっても問題もあります。ミューテーション分析については、テストケース仕様からミューテーションテストの仕様を作成
BDDについて自分なりにまとめてみた Published on 2011-07-02 Updated on 2011-07-02 BDDという言葉も割と人によって指すものが違うようなので「俺の中でのBDDはこうだよ」って内容のエントリ。別に絶対的なものでもないと思うので参考までに 結論から とりあえず結論だけ知りたい人向けに。 BDDにはふたつの種類がある TDDの言い換えのBDD(開発寄り) ATDD(受け入れテスト)でのBDD(ユーザ寄り) 振る舞い BDDは振る舞い駆動開発と言われたりするように、テストという言葉のかわりに振る舞いという言葉を使う。日本語的には仕様と言うほうがわかりやすいかもしれない。多分、BDDのイメージが掴みにくいのはこの振る舞いという言葉にあると思う。と言うのも振る舞いと言うのは、人の立場よって変わるからだ。例えば、プログラマがあるクラスを実装している時に言う振
Gaming, Opera GX Pimp your smartphone with GX Mods, now available in Opera GX on Android and iOS February 8th, 2024 Transform the look and feel of your smartphone and tablet and browse like a badass by installing dozens of Mods... New green energy-powered AI data cluster with NVIDIA DGX supercomputing coming to Iceland February 7th, 2024 We’re excited to announce plans to deploy a new AI cluster i
Loading… Flash Player 9 (or above) is needed to view presentations. We have detected that you do not have it on your computer. To install it, go here. PHPUnit Best Practices - Presentation Transcript PHPUnit Best Practices Sebastian Bergmann July 22 nd 2010 Hello! My name is Sebastian. Sebas tian Hello! My name is Sebastian … and this is what
単体テストレベルでは、「コードカバレッジ」を意識しながら(基準にしながら)テスト設計やテストケース作成を行う機会が多い。でも、この「コードカバレッジ」って用語がばらばらであったり、どのカバレッジ基準がどういうことを確認するものなのか、どういう不具合を見つけられるのか、見つけられないのか、といったことが自分の中でしっかりまとまっていなかったので、いろいろ調べてまとめようと思います。 2008/03/12更新 サンプルプログラムで解説を追加 サンプルプログラムは、以前例題として作成したテニスのスコアボードについて [例題]テニスのスコアボード ステートメントカバレッジ 命令網羅。テスト対象となるプログラム中のステートメント(命令文)をどれくらい実施したかどうかをあらわす基準。すべてのステートメントを最低1回実施した場合に、ステートメントカバレッジ100%という。もっとも基本的なカバレッジ基準で
ソフトウェアテスト (英: software testing) は、コンピュータのプログラムから仕様にない振舞または欠陥(バグ)を見つけ出す作業のことである。ソフトウェアテストで見つかったプログラム中の欠陥を修正する作業をデバッグという。ソフトウェアテストに成功するとは、テストで欠陥が発見されるか、規定した試験項目にすべて合格するか、規定した品質目標に到達することである。目標とした品質には、規定した試験項目にすべて合格することもある。例えば、OS, プログラミング言語では、仕様を満たしているかどうかの適合試験を規定している。ソフトウェアテストでは、欠陥が存在することを示すことはできるが、欠陥が存在しないことは証明できない。ソフトウェアに仕様にない振舞がないことを保証する作業を証明といい、証明用のシステム、証明しやすい言語も多数存在している。本項では動的なソフトウェアテストを中心に扱う。 ソ
テストの網羅性については様々なものがある。基本的な網羅性の観点としては、構造ベース、仕様ベース、外部の標準や指標ベースなどが挙げられる。 そして観点ごとに、様々な網羅性の指標がある。ユニットテストの場合だと、例えば以下がある。 コードの構造網羅 コードの構造を網羅する。ここでいうコードの構造としては、制御フロー、データーフロー、例外フローなどがある。具体的な指標としては、コードカバレッジが有名。コードの構造網羅では、コードカバレッジなどを基準にして、基準以上の網羅性を確保できるようにテストを設計する。 なお、構造網羅というと、一般的な定義ではコード以外の構造も扱われるが、このブログでは便宜上「構造網羅をコードの構造を網羅すること」という定義に絞り込んで説明する。 仕様網羅 コードの仕様を網羅する。コードの仕様には、対象(対象の粒度はテストレベルに依存する。例えば関数やクラス、モジュールを単
まとめ テストの「カバレッジ」には、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;
「市販のテストツールはかゆいところに手が届かない」「使いこなせるようになるまでに時間がかかる」「そもそも価格が高すぎる」――。システム開発の現場を回ると、テストツールに対してこんな声が聞こえてくる。 なぜテストツールは現場に根付かないのか。これにはいろいろな理由がある。「必要な機能を備えていない」というのがその代表だろう。現場ではテストデータの作成に時間がかかっているのに、それを支援する機能がない場合がある。「操作を覚えるのに時間がかかる」というのもよく聞く話だ。一連の操作をマスターするために、専門のインストラクターによるトレーニングを必要とするツールもある。 ツールを使うと「テストスクリプトやデータのメンテナンスが大変」という場合もある。テストの効率を高めるには、テストスクリプト(テストの手順を記述したコード)やテストデータを使い回すことがポイントとなる。メンテナンスに時間がかかるようで
snowballdesign.com is for sale Please prove you're not a robot
TwitterでこんなTweetが流れた… エビデンスとしてNUnitのGUIのスクリーンショットと、対応するテストコードが含まれている部分のVSのスクリーンショットを取る作業が終りません・・・ UnitTestのエビデンスって…なに? 一般的にテストのエビデンスというと、次の2点を指す。 テスト手順を明らかにするもの(ex. テスト設計書、テスト仕様書、...) テスト結果の証拠(ex. 画面ハードコピー、DBスナップショット、...) UnitTestでは、これはこのように解釈できる。 テスト手順を明らかにするもの = テストコード テスト結果の証拠 = 今実行すればテストが全てグリーンになること これがなぜか理解されず、軋轢とストレスと大きな工数追加になっている現場がずいぶんある。 なぜUnitTestはいつまでも理解されないのだろう。 余談。これらのことは、Seleniumなどを使
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く