Какие методы тестирования вы используете для разработки веб-сайтов? - PullRequest
7 голосов
/ 14 февраля 2010

Существует множество методов тестирования, например черный ящик , серый ящик , единица , функциональный , регрессия и т. Д.

Очевидно, что проект не может использовать все методы тестирования. Поэтому я задал этот вопрос, чтобы понять, какие методы тестирования использовать и зачем их использовать. Вы можете ответить в следующем формате:

Метод испытания - что вы используете на

, например

  1. Модульное тестирование - я использую его для ... (бла, бла)
  2. Регрессионное тестирование - я использую его для ... (бла, бла)

Меня попросили заняться TDD и, конечно, мне пришлось исследовать методы тестирования. Но их целое множество, и я не знаю, что использовать (потому что все они звучат полезно).

Ответы [ 7 ]

6 голосов
/ 18 февраля 2010

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

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

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

.

Эта Разработка, основанная на тестировании и Разработка на основе функций вики-статьи будут вам очень полезны.

Для TDD вам необходимо выполнить следующий процесс:

  1. Функция документа (или вариант использования), которая вам нужно реализовать или улучшить в вашем приложении, что В настоящее время не существует.
  2. Запись набора функциональный тест случаи, которые могут обеспечить выше функция (с шага 1) работает. Вам может понадобиться написать несколько тестов для выше функция, чтобы проверить все разные возможные рабочие потоки.
  3. Напишите код для реализации вышеуказанной функции (с шага 1).
  4. Протестируйте этот код, используя тестовые примеры, которые вы писал ранее (на шаге 2). Фактический
    тестирование может быть ручным, но я бы рекомендовал создавать автоматизированные тесты если возможно.
  5. Если все тесты пройдены успешно, вы можете идти. Если нет, вам необходимо обновить код (вернитесь к шагу 3) чтобы пройти тестовый набор.

TDD должен гарантировать, что функциональные тестовые примеры, которые были написаны до того, как вы закодировали, должны работать и не имеет значения, как был реализован код.

3 голосов
/ 15 февраля 2010

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

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

(Примеры ниже приведены в 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

РУЧНОЕ ИСПЫТАНИЕ
Как бы я ни любил автоматизированное тестирование, оно, IMHO, не заменит ручное тестирование. Основная причина в том, что автоматизированный пользователь может делать только то, что ему говорят, и проверять только то, что ему сообщили, для того, чтобы он воспринимался как пройденный / неудачный. Человек может использовать свой интеллект, чтобы находить ошибки и задавать вопросы, возникающие при тестировании чего-то другого.

  • Поисковые испытания
    ET - это очень дешевый и эффективный способ поиска дефектов в проекте. Он использует интеллект человека и учит тестеров / разработчиков больше о проекте, чем любой другой метод тестирования, который я знаю. Проведение сеанса ET, предназначенного для каждой функции, развернутой в тестовой среде, - это не только эффективный способ быстрого поиска проблем, но также хороший способ учиться и получать удовольствие!
    http://www.satisfice.com/articles/et-article.pdf

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

0 голосов
/ 20 февраля 2010

Другие ответы, опубликованные до сих пор, фокусируются на модуле / функционале / производительности / и т.д. тестирование, и все они разумны.

Однако один из ключевых вопросов, который вам следует задать, это «насколько эффективно мое тестирование?».

На это часто отвечают тестовые покрытия инструменты, которые определяют, какие части вашего приложения фактически выполняются определенным набором тестов. Идеальный инструмент охвата тестирования позволяет протестировать ваше приложение любым способом, который вы можете себе представить (включая все стандартные ответы выше), а затем сообщит, какая часть и какой процент вашего кода был выполнен. Самое главное, он скажет вам, какой код вы не использовали . Затем вы можете проверить этот код и решить, оправдано ли дополнительное тестирование, или вам все равно. Если непроверенный код связан с «обработкой ошибок при переполнении диска», и вы считаете, что диски емкостью 1 ТБ являются распространенными, вы можете проигнорировать это. Если непроверенный код является логикой проверки входных данных, приводящей к запросам SQL, вы можете решить, что вы должны проверить эту логику, чтобы убедиться, что никакие атаки SQL-внедрения не могут произойти.

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

Инструменты тестирования покрытия могут быть получены из различных источников. SD предоставляет семейство инструментов тестирования покрытия , которые обрабатывают C, C ++, Java, C #, PHP и COBOL, и все они используются для поддержки тестирования веб-сайтов различными способами.

0 голосов
/ 19 февраля 2010

Ответ зависит от используемого веб-фреймворка (если есть). Например, Django имеет встроенные функции тестирования.

Для PHP (или функциональное веб-тестирование ) SimpleTest довольно хорошо и хорошо ... просто. Он поддерживает модульное тестирование (только PHP) и веб-тестирование . Тесты могут выполняться в IDE (Eclipse) или в браузере (имеется в виду на вашем сервере).

0 голосов
/ 18 февраля 2010

Selenium очень хорошо подходит для тестирования веб-сайтов.

0 голосов
/ 16 февраля 2010

Ну, прежде чем перейти к ответу, я хотел бы прояснить концепцию тестирования нескольких методов.

Существует шесть основных типов тестирования, которые охватывают все большинство всех методов тестирования.

  1. Тестирование черного ящика
  2. Тестирование белой коробки
  3. Тестирование серая коробка
  4. Функциональное тестирование
  5. Интеграционное тестирование
  6. Юзабилити-тестирование

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

Таким образом, для полного тестирования веб-сайта вам необходимо использовать как минимум следующие методы тестирования на основе доступных ресурсов для тестирования. Это, по крайней мере, методы, которые следует использовать для тестирования веб-сайта, но могут существовать и другие методы imp для базового характера веб-сайта.

  1. Тестирование требований
  2. Испытание на удар
  3. Системное тестирование
  4. Интеграционное тестирование
  5. Регрессионное тестирование
  6. Тестирование безопасности
  7. Тестирование производительности и нагрузки
  8. Тестирование развертывания

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

Специально не существует жесткого и быстрого правила, чтобы следовать любому типу тестирования или любому методу. Как вы знаете, «Тестирование - это ИСКУССТВО», поэтому у искусства нет правил или границ. Это полностью зависит от вас Что вы используете для тестирования и как .......

Надеюсь, вы получили ответ на вопрос.

0 голосов
/ 15 февраля 2010

Я обычно делаю следующие вещи:

  • Согласованность страниц в случае многостраничных веб-стилей.
  • Тестирование соединений с базой данных.
  • Проверка функциональности, на которую может повлиять только что внесенное мной изменение.
  • Я тестирую функции с вводом образца, чтобы убедиться, что они работают нормально (особенно те, которые похожи на алгоритмы).
  • В некоторых случаях я реализую функции очень просто путем жесткого кодирования большинства настроек, затем реализую настройки позже, тестируя после реализации каждой настройки.

Большинство из них применимо и к приложениям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...