Разработка через тестирование и совершенствование навыков тестирования белого ящика

9

Я программист начального уровня Java прямо из школы. У меня есть хорошие знания и опыт работы с J2SE. Кто-нибудь может посоветовать мне, как улучшить или настроить мои навыки, чтобы стать тестером Java белого ящика? Широкий спектр входов приветствуется.

А что такое разработка через тестирование?

user892871
источник
Почему бы не провести тестирование черного ящика?
Мартейн Вербург
@Martijn, учитывая фон, скорее всего из-за технических проблем тестирования белого ящика. Кроме того, хотя методы «черного ящика» очень полезны для разработчиков, люди с хорошими качествами для разработчика не делают хороших тестеров для «черного ящика», мы слишком любопытны и можем испытывать нетерпение. Я знаю, что сделал.
StuperUser

Ответы:

9

Разработка через тестирование (TDD) и ее расширенные родственники, Acceptance TDD (ATDD) и Behavior Driven Development (BDD) являются полезными методами для обучения в качестве экосистемы Java. Я сосредоточусь на TDD, так как вы ищете тестирование белого ящика.

Что такое TDD? - В основе лежит практика написания провального теста (красного цвета), его прохождение проходит путем написания реализации (зеленого цвета) и последующего перефакторинга. Википедия Статья является достаточным местом для начала , чтобы узнать дополнительную информацию. Но эта тема обширна, я рекомендую прочитать некоторые из известных книг в этой области, таких как « Разработка через тестирование на примере» и « Эффективная работа с устаревшим кодом» . Я также добавлю бесстыдный плагин для главы TDD в The Well-Gounded Java Developer

В экосистеме Java это означает, что вы хотите изучить:

  1. Библиотека JUnit и / или библиотека TestNG .
  2. Библиотека-насмешка, такая как Mockito или JMock
  3. Инструмент нагрузочного тестирования для атаки кода - JMeter
  4. Концепция внедрения зависимости (форма инверсии контроля)

А потом практиковаться, практиковаться, практиковаться, практиковаться. Хорошие тестеры Java белого ящика очень редки, лучшие из них написали тесты для широкого спектра кодовых баз.

HTH с чего начать!

Мартейн Вербург
источник
Они также являются полезными приемами для обучения как разработчика в экосистеме Java. Как я понимаю, тестеры должны проводить тестирование черного ящика.
Том
1

Junit - одна из лучших платформ модульного тестирования для языка программирования Java. Это среда с открытым исходным кодом для написания и запуска повторяемых тестов.

Swagatika
источник
1

Я обычно не люблю цитировать Википедию, но информация в этой статье кажется достаточно безопасной ...

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

По сути, это простейший подход к разработке программного обеспечения, в котором сначала разрабатываются и пишутся модульные тесты для сценариев использования, а затем - сложная разработка, чтобы помочь пройти эти модульные тесты.

maple_shaft
источник
0

Я не уверен, что мое предложение будет рассматриваться как инструменты для тестирования белого ящика, но вы также можете посмотреть на dbUnit для проектов на основе базы данных и Selenium для веб-тестирования (например, проверка элементов, которые должны существовать, на основе некоторых результатов).

Боб Сантос
источник
0

В вопросе конкретно упоминается «тестирование белого ящика». Именно здесь ваши тесты обладают глубокими знаниями о внутренней структуре вашего кода и утверждают поведение на каждом шаге, а не только ввод / вывод / побочный эффект (тестирование черного ящика). Несмотря на то, что JUnit отлично подходит для обеих задач, вам нужны дополнительные дополнительные платформы, чтобы сделать это в контексте модульного теста.

EasyMock и JMock - хорошие рамки для этого. Я склоняюсь в пользу JMock.

Рискуя начать дебаты по ОТ, вы должны тщательно подумать о последствиях тестирования белого ящика. Тесты «белого ящика» тесно связаны с вашим кодом (очевидно), и, если не использовать их осторожно, фреймворк-фреймворки могут сделать ваши тесты довольно сложными, трудными для чтения и, как правило, более хрупкими при рефакторинге.

Я склонен придерживаться обоих. Тесты «черного ящика», где это возможно, и тесты «белого ящика», экономно применяемые к более рискованному / более сложному коду.

Конечно, вышеперечисленные структуры также можно использовать в тестах черного ящика, где число участвующих (внедряемых) классов велико, а простая заглушка становится громоздкой.

Что касается TDD - это прежде всего подход к написанию кода, улучшающий дизайн, а не просто способ написания тестов. Тесты, которые у вас есть в конце, являются важным результатом, но, кроме того, этот подход призван улучшить дизайн и структуру вашего приложения.

rupjones
источник