web-dev-qa-db-ja.com

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

私は入門レベルですJava学校を卒業したばかりのプログラマーです。私はJ2SEの知識と経験が豊富です。私のスキルを向上または調整する方法について誰かに教えてもらえますかJavaホワイトボックステスター?幅広い入力を歓迎します。

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

9
user892871

テスト駆動開発(TDD)とそれを拡張した従兄弟、受け入れTDD(ATDD)と動作駆動開発(BDD)は、Javaエコシステムでテスターとして学ぶのに役立つテクニックです。ホワイトボックステストを探しているTDD。

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

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

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

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

HTHはあなたを始めます!

9
Martijn Verburg

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

1
Swagatika

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

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

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

1
maple_shaft

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

0
Bob Santos

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

EasyMock および JMock は、これを行うための優れたフレームワークです。私はJMockを支持する傾向があります。

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

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

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

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

0
rupjones