Существует много методов тестирования там т.е. черного ящика, graybox, единицы, функциональной, регрессия и т.д.
Очевидно, проект не может взять все методы тестирования. Таким образом, я задал этот вопрос для получения идеи того, какие методы тестирования использовать и почему должен, я использую их. Можно ответить в следующем формате:
Метод тестирования - на чем Вы используете его
например.
Меня попросили участвовать в TDD, и конечно я должен был исследовать методы тестирования. Но существует целое изобилие их, и я не знаю, что использовать (потому что они все звучат полезными).
1. Модульное тестирование используется разработчиками для проверки правильности написанного им кода модуля. Обычно это тестирование белого ящика, а также некоторый уровень тестирования черного ящика.
2. Регрессионное тестирование - это функциональное тестирование, используемое тестировщиками, чтобы убедиться, что новые изменения в системе не нарушили ни одну из существующих функциональных возможностей
3. Функциональное тестирование - это тестирование полной интегрированной системы для оценки ее соответствия установленным требованиям. Функциональное тестирование относится к сфере тестирования черного ящика и, как таковое, не требует знания внутренней структуры кода или логики
.
Вики-статьи Разработка через тестирование и Разработка через функции будут для вас большим подспорьем.
Для TDD вам необходимо выполнить следующий процесс:
TDD должен гарантировать, что функциональные тестовые примеры, которые были написаны до того, как вы написали код, должны работать, и не имеет значения, как был реализован код.
Обычно я делаю следующее:
Большинство из них применимо и к приложениям.
В тестировании нет «правильного» или «неправильного». Тестирование - это искусство, и то, что вам следует выбрать, и насколько хорошо оно вам подходит, во многом зависит от проекта к проекту и от вашего опыта.
Но как профессиональный эксперт по тестированию я предлагаю вам использовать хорошее сочетание автоматизированного и ручного тестирования.
(Примеры ниже на PHP, но вы можете легко найти правильные примеры для любого языка / фреймворка, который вы используете)
АВТОМАТИЧЕСКОЕ ТЕСТИРОВАНИЕ
Модульное тестирование
Используйте PHPUnit для тестирования ваших классов, функций и взаимодействия между ними.
http: //phpunit.sourceforge.net /
Автоматическое функциональное тестирование
Если возможно, вам следует автоматизировать большую часть функционального тестирования. В некоторые рамные работы встроено функциональное тестирование. В противном случае вам придется использовать для этого инструмент. Если вы разрабатываете веб-сайты / приложения, возможно, вам стоит взглянуть на Selenium.
http://www.webinade.com/web-development/functional-testing-in-php-using-selenium-ide
Непрерывная интеграция
Используйте CI, чтобы убедиться, что все ваши автоматизированные тесты запускаются каждый раз кто-то из вашей команды принимает на себя обязательства по проекту.
http://martinfowler.com/articles/continuousIntegration.html
РУЧНОЕ ТЕСТИРОВАНИЕ
Как бы мне ни нравилось автоматическое тестирование, оно, ИМХО, не заменяет ручное тестирование. Основная причина в том, что автоматизированный процесс может делать только то, что ему говорят, и проверять только то, что ему проинформировали, чтобы считать пройденным / неудачным. Человек может использовать свой интеллект, чтобы находить ошибки и задавать вопросы, возникающие при тестировании чего-то еще.
Этот ответ (почти) идентичен тому, который я дал на другой вопрос. Проверьте этот вопрос, так как на него есть еще несколько хороших ответов, которые могут вам помочь. Как мы можем решить, какой метод тестирования можно использовать?
Ну, прежде чем перейти к ответу, я хотел бы прояснить концепцию тестирования о нескольких методах.
Существует шесть основных типов тестирования, которые охватывают все наиболее распространенные методы тестирования.
Почти все методы тестирования относятся к этим типам, вы также можете использовать некоторые методы тестирования в нескольких типах, например, вы можете использовать дымовое тестирование в черном или белом ящике на основе ресурсов, доступных для тестирования.
Таким образом, для полного тестирования веб-сайта необходимо использовать как минимум следующие методы тестирования на основе доступных для тестирования ресурсов. Это как минимум методы, которые следует использовать для тестирования веб-сайта, но могут быть и другие методы, основанные на природе веб-сайта.
Вы должны, по крайней мере, использовать все вышеперечисленные (8) методы тестирования для тестирования веб-сайта, независимо от того, на какой тип тестирования вы ориентируетесь. Вы можете автоматизировать тестирование в некоторых областях, а можете делать это вручную, все зависит от наличия ресурсов.
Не существует жесткого и быстрого правила следовать любому типу тестирования или любому методу. Как вы знаете, "тестирование - это искусство", поэтому у искусства нет правил или границ. Это полностью зависит от вас, что вы используете для тестирования и как.
Надеюсь, вы получили ответ на вопрос.
Ответ зависит от используемого веб-фреймворка (если таковой имеется). Django , например, имеет встроенные функции тестирования.
Для PHP (или функционального веб-тестирования ), SimpleTest довольно хорош и хорошо ... прост. Он поддерживает Модульное тестирование (только PHP) и Веб-тестирование . Тесты могут выполняться в среде IDE (Eclipse) или в браузере (то есть на вашем сервере).
Остальные ответы, опубликованные на данный момент, посвящены модулю / функционалу / производительности / и т. Д. тестирование, и все они разумны.
Однако один из ключевых вопросов, который вы должны задать, - «насколько эффективно мое тестирование?».
На этот вопрос часто отвечают с помощью инструментов покрытия тестами , которые определяют, какие части вашего приложения фактически проверяются с помощью некоторого набора тестов. Идеальный инструмент тестового покрытия позволяет вам тестировать ваше приложение любым способом, который вы можете себе представить (включая все стандартные ответы, приведенные выше), а затем сообщать, какая часть и какой процент вашего кода были задействованы. Что наиболее важно, он скажет вам, какой код вы не использовали . Затем вы можете проверить этот код и решить, требуется ли дополнительное тестирование или вам все равно. Если непроверенный код имеет отношение к «обработке ошибок при переполнении диска», и вы полагаете, что диски емкостью 1 ТБ являются обычным явлением, вы можете проигнорировать это. Если непроверенный код является логикой проверки ввода, ведущей к запросам SQL, вы можете решить, что должны протестировать эту логику, чтобы убедиться, что не могут произойти атаки с использованием SQL-инъекций.
Какие инструменты тестового покрытия позволяют вам сделать это, чтобы принять рациональное решение, которое вы адекватно протестировали, используя данные о том, какие части вашего кода были проверены. Таким образом, независимо от того, как вы тестируете, лучшие практики показывают, что вам также следует провести анализ тестового покрытия.
Инструменты тестового покрытия можно получить из множества источников. SD предоставляет семейство инструментов для покрытия тестов , которые обрабатывают C, C ++, Java, C #, PHP и COBOL, и все они используются для поддержки тестирования веб-сайтов различными способами.