テスト駆動開発とホワイトボックステストスキルの向上


9

私は入学直後の入門レベルのJavaプログラマーです。J2SEの知識と経験は豊富です。Javaホワイトボックステスターに​​なるためのスキルを向上または調整する方法について誰かが私にアドバイスできますか?幅広い入力を歓迎します。

そして、テスト駆動開発とは何ですか?


なぜブラックボックステストもしないのですか?
Martijn Verburg

@Martijn、背景を考慮すると、おそらくホワイトボックステストの技術的な課題が原因です。また、ブラックボックステクニックは開発者にとって非常に有用ですが、開発者としての資質の高い人は、優れたブラックボックステスターを作成しません。私はそうしました。
StuperUser 2011

回答:


9

Test Driven Development(TDD)とその拡張版であるAcceptance TDD(ATDD)とBehavior Driven Development(BDD)は、Javaエコシステムのテスターとして学ぶのに役立つテクニックです。ホワイトボックステストを探しているときは、TDDに焦点を当てます。

TDDとは?-本質的には、失敗したテスト(赤)を作成し、実装(緑)を作成してそのテストに合格した後、リファクタリングを行うことです。ウィキペディアの記事は、より詳細な情報を見つけるために開始するための十分な場所です。しかし、トピックは広範です例によるテスト駆動開発レガシーコードの効果的な使用など、この分野でよく知られている本を読むことをお勧めしますThe Well-Grounded Java Developerの TDDの章にも恥知らずなプラグインを投入します

Javaエコシステムでは、これはあなたが学びたいことを意味します:

  1. JUnitライブラリーおよび/またはのTestNGライブラリ。
  2. MockitoJMockなどのモックライブラリ
  3. コードを攻撃する負荷テストツール-JMeter
  4. 依存性注入の概念(制御の反転の形式)

そして練習、練習、練習、練習。優れたJavaホワイトボックステスターは非常にまれであり、最高のものが幅広いコードベースに対してテストを記述しています。

HTHはあなたを始めます!


また、Javaエコシステムの開発者として学ぶのに役立つテクニックでもあります。私が理解しているように、テスターはブラックボックステストを行う必要があります。
トム

1

Junitは、Javaプログラミング言語に最適な単体テストフレームワークの1つです。反復可能なテストを作成して実行するためのオープンソースのフレームワークです。


1

私は通常ウィキペディアを引用するのは好きではありませんが、この記事の情報は十分に安全なようです...

http://en.wikipedia.org/wiki/Test-driven_development

本質的には、これはソフトウェア開発に対するテストファーストのアプローチです。ユニットテストは最初にユースケースに合わせて設計および記述され、その後、ハードテストが行​​われて、それらのユニットテストに合格するのに役立ちます。


0

私の提案がホワイトボックステストのツールと見なされるかどうかはわかりませんが、データベース駆動型プロジェクトのdbUnitとWebテスト(たとえば、いくつかの結果に基づいて存在するはずの要素の検査)のSeleniumも確認できます。


0

質問は特に「ホワイトボックステスト」に言及しています。これは、テストがコードの内部構造に関する深い知識を持ち、入力/出力/副作用(ブラックボックステスト)ではなく、各ステップで動作をアサートする場所です。JUnitは両方を実行するのに優れていますが、単体テストのコンテキスト内でこれを実行するには、さらに追加のフレームワークが必要です。

EasyMockJMockは、これを行うための優れたフレームワークです。私はJMockを好む傾向があります。

OTの議論を始めるリスクがある場合、ホワイトボックステストの影響について慎重に検討する必要があります。ホワイトボックステストは(明らかに)コードに密接に結びついており、注意深く使用しないと、モックフレームワークによってテストがかなり複雑になり、読みにくくなり、リファクタリング時にテストがより脆弱になる傾向があります。

私は両方のミックスに固執する傾向があります。可能な限りブラックボックステストを行い、ホワイトボックステストはリスクの高い/より複雑なコードには控えめに適用します。

もちろん、上記のフレームワークは、寄与(注入)クラスの数が多く、単純なスタブが手に負えなくなるブラックボックステストでも使用できます。

TDDについて-これは、単にテストを記述する方法ではなく、コードを記述するための設計を強化するアプローチです。最後に行うテストは重要な出力ですが、さらにこのアプローチはアプリケーションの設計と構造を強化することを目的としています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.