Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание тестов работоспособности 
:(
    Опции темы
sad8c
Дата 18.11.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 31.7.2007

Репутация: нет
Всего: нет



Здравствуйте! Ознакомляюсь с методикой экстремального программирования. Все очень понятно, интересно и логично. Но вот только один момент никак не укладывается в голове - автор (Кент Бек) делает упор на необходимость разработки тестов работоспособности реализуемой функции непосредственно перед самой реализацией. И с ним конечно нельзя не согласиться, т.к. качественное  тестирование на этапе разработки - залог качественной работы реализуемого проекта. Настораживает одно - автор имеет ввиду скрипты автоматического тестирования, причем утверждая, что (цитирую): "Любая возможность программы, для которой нет автоматических тестов, просто не существует." Соответственно, пытаясь представить себе скрипты автоматического тестирования таких функций, как например валидация формы регистрации, форма поиска, не говоря уже о яваскриптовых примочках интерфейса - на меня честно говоря находит легкий ступор... smile 

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

Если у кого-то есть опыт в подобных методиках - поделитесь пожалуйста. Я ведь не исключаю кстати и того, что я просто не правильно понял автора.
PM MAIL   Вверх
Simpliest
Дата 19.11.2009, 03:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



Все правильно.

Цитата(sad8c @  18.11.2009,  20:35 Найти цитируемый пост)
валидация формы регистрации

Валидация тестируется так же как и все остальное.
Задаешь правильные параметры и неправильные.
Затем тестируешь валидацию, 

Код

assert($frm->isValid($data), true);
assert($frm->isValid($data), false);

форма должна пропустить первые и не пропустить вторые.

Поэтому пишешь такой тест, затем начинаешь писать саму форму.
Потом прогоняешь ее.

Цитата(sad8c @  18.11.2009,  20:35 Найти цитируемый пост)
 яваскриптовых примочках интерфейса 

Тестирование интерфейса это во многом отдельная песня. Посмотри в сторону Selenium.

Добавлено через 2 минуты и 18 секунд
Вкратце, в тесте ты подаешь на вход метода данные. И проверяешь наличие ожидаемого результата
(будь то обработанные данные, или выброшенное исключение)
Проверять надо крайние случаи - обязательно,
и 1-2 типичных варианта.


--------------------
user posted image
PM   Вверх
sad8c
Дата 19.11.2009, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 31.7.2007

Репутация: нет
Всего: нет



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

В общем - спасибо огромное за развеивание моих сомнений, теперь буду копать в направлении Selenium)
PM MAIL   Вверх
Simpliest
Дата 19.11.2009, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



Цитата(sad8c @  19.11.2009,  07:47 Найти цитируемый пост)
 что основная сложность при написании теста - это продумывание критических ситуаций на входе в методы

Ммм, я бы сказал несколько иначе.

Основная сложность при написании теста заключается в проектировании того, что ты тестируешь. Т.е. что ты должен получить в качестве входных данных, как их обработать, и что в итоге вернуть.

Например, хочу функцию возведения в степень.
Теперь начинаю полностью продумывать как себя должна она вести
Она может принимать любое число в качестве основания и только целые числа больше нуля в качестве показателя.
Результат может быть только числом отличным от нуля.

Вот как только я это продумал, то могу написать тест.

Код

assertInteger(pow(2,2)); // результат должен быть целым
assertEqual(pow(2,2), 4); // результат должен быть равен 4
assertFloat(pow(2.2,2)); // результат должен быть вещественным 
assertEqual(pow(2.2,2), 4.84); // результат должен быть равен 4.84
assertInteger(pow(0, 25)); // результат должен быть целым
assertEqual(pow(0,25), 1); // результат должен быть равен 1
assertPowerFloatException(pow(4, 2.2)); // жду исключения PowerFloatException
assertPowerNegativeException(pow(4, -2)); //жду исключения PowerNegativeException

Все, теперь написав тест, могу писать саму функцию и тестировать ее.

Добавлено через 5 минут и 46 секунд
Вот пример, когда в тесте пропущена важная проверка.
Основание не проверяется и может быть даже строкой 'abc'
Поскольку я упустил это в тесте, то с почти 100%й вероятностью я не поставлю эту проверку в самой функции.

Это сообщение отредактировал(а) Simpliest - 19.11.2009, 09:30


--------------------
user posted image
PM   Вверх
sad8c
Дата 19.11.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 31.7.2007

Репутация: нет
Всего: нет



т.е. если я правильно понял, то в контексте приведенного примера, это :

Код

assertPowerStringException(pow('abc', 2));


И, насколько я понимаю, в данном примере участвует некая библиотека для тестирования, снабженная приведенными функциями (примитивными, но все же...). Значит ли это, что в существующих инструментах тестирования ПО имеются подобные API?
PM MAIL   Вверх
Simpliest
Дата 20.11.2009, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



Цитата(sad8c @  19.11.2009,  18:07 Найти цитируемый пост)
т.е. если я правильно понял, то в контексте приведенного примера, это :
код PHP
1:
assertPowerStringException(pow('abc', 2));

Да. Хотя это может быть NotFloatException - впрочем это не суть важно. 


Цитата(sad8c @  19.11.2009,  18:07 Найти цитируемый пост)
Значит ли это, что в существующих инструментах тестирования ПО имеются подобные API? 

Конечно. Для тестирования используют специальные библиотеки.

Для PHP используются 
PHPUnit, SimpleTest
В Java это JUnit, для C# - NUnit

PHPUnit интегрирован с NetBeans IDE, и ZendStudio. Вот насчет Eclipse PTD - точно не помню.

Впрочем, его можно использовать и отдельно от IDE - это самостоятельный продукт.

Добавлено через 1 минуту и 3 секунды
Цитата(sad8c @  19.11.2009,  18:07 Найти цитируемый пост)
в данном примере участвует некая библиотека для тестирования

А в примере у меня все абстрактно smile Т.е. именно таких методов скорее всего нигде нет smile


--------------------
user posted image
PM   Вверх
sad8c
Дата 20.11.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 31.7.2007

Репутация: нет
Всего: нет



Спасибо большое за ценную консультацию! Странно, что эта тема как-то не развита на форуме...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0749 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.