Функциональное тестирование (FunctionalTesting) и Web

октября 15, 2007 by admin

Функциональное тестирование - процесс, в ходе которого, готовая программа проверяется на соответствие требованиям того, на чьи деньги мы пьем кофе. Главная задача функционального тестирования - говорить, что либо “странно, но ты ничего не сломал”, либо “я так и знал, теперь чини”.

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

Что тестировать?

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

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

  • email (заполнен, соответствует паттерну, уникален на сайте)
  • пароль (заполнен, не содержит “нехороших” символов)
  • подтверждение пароля (заполнен, соответствует паролю)
  • псевдоним (заполнен, не содержит “нехороших” символов, уникален на сайте)

После этого мы должны проверить, что нам пришло “правильное” письмо, не пришло неправильных.

Из за использования метода addRecipient(), вместо setRecipient(), у класса PHPMailer, мы однажды разослали 15 000 писем нашим пользователям. По 50-70 штук на каждую невинную жертву. Если бы тест проверял наличие лишних писем, то все бы было хорошо, а так - по башке получили. Хорошо хоть в спам-лист не попали.

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

Если вы случайно стали этим самым тестером, то в данном опусе я попробую облегчить вам жизнь. В идеале все что от вас потребуется после автоматизации функционального тестирования, это запускать тесты, и смотреть как все-само-нажимается. А если вам и запускать их надоест, то постоянная интеграция и Selenium RC вам помогут.

Чем тестировать?

Есть два больших лагеря продуктов для функционального тестирования:

Первые немного ущербные даже идеологически, так как браузер это неотъемлемая часть веб-приложений. То есть то, что тесты проходят совершенно не гарантирует, что приложение будет работать у конечных пользователей. Но их высокая скорость позволяет использовать их для простых задач, типа определения “битых” ссылок.

Среди вторых хочется отметить Selenium, который уже стал стандартом де факто, для автоматизации функционального тестирования веб-приложений, ибо:

Продолжение следует…

Posted in Без рубрики |

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.