Целесообразность unit-тестов

su1d

Старожил PHPClubа
PHP'шные unit-test'ы, идущие с каждой версией, вполне себе нормально моделируют окружение: позволяют имитировать передачу данных методами POST и GET, и т.п.
или вы не о том?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Не о том. Мы о тестовой базе данных.
 

Crazy

Developer
Тестовая база данных нужна только для тестирования Data Access Layer, которые выполняется достаточно нечасто. Все остальное нормальные люди тестируют, заменяя штатный DAL специальной заглушкой.
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Можно поподробнее о заглушке?
 

csa

Guest
Автор оригинала: Crazy
Тестовая база данных нужна только для тестирования Data Access Layer, которые выполняется достаточно нечасто. Все остальное нормальные люди тестируют, заменяя штатный DAL специальной заглушкой.
что есть DAL? нечто вроде PEAR_DB или же сюда включаются классы, инкапсулирующие конкретные SQL-запросы?
меня интересует как раз второе
таких классов у меня достаточно много и иногда приходится добавлять функциональность в класс, отладка (и тестирование) которого была произведена достаточно давно, поэтому хочется прогнать его на тестах
каким образом ты тестируешь DAL?
 

Константин_WEB

Guest
Вот у меня в проекте назревает небольшой рефакторинг... одним из пунктов является замена MySQL на FireBird. Т.е. код изменится в принципе. Что-то пойдёт на триггеры и процедуры и в PHP перестанет существовать в виде кода. Т.о. применение юнит-тестов оправданно только на классах очень высокого уровня или скорее не на рефакторинге а на реинжениринге? Сейчас никакие тестов нет, но чтобы проверить коректную работу новой системы по отношению к старой нужно их написать. Что применяется в подобных случаях?

Подскажите хорошие ресурсы пожалуйста по этой тематике.
 

AlexVN

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

Константин_WEB

Guest
Спасибо. И какую часть времени должно занимать(или занимает по тсатистике) такое QA от полного цикла?
 

Mephistophel

Новичок
Насколько я понял, народ в основном использует PEAR::pHPUnit.
Я еще вплотную не занимался юнит-тестами, только выбираю, чем пользоваться. Но вот PEAR::pHPUnit уже давно не обновлялся, есть PEAR::pHPUnit2, но он требует php5. Еще мне будут нужны mock objects, которые для PEAR::pHPUnit тоже есть только для второй версии.
Может быть, можете что-нибудь посоветовать? Что использовать?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
что такое mock objects?
 

pachanga

Новичок
В двух словах и не раскажешь, проще говоря подмена конкретной реализации некоторым объектом, поведение которого можно контролировать из теста.

Читай здесь http://www.lastcraft.com/mock_objects_documentation.php

На данный момент SimpleTest имеет лучшую поддержку mock objects для php
 

Mephistophel

Новичок
Originally posted by varan
что такое mock objects?
Это те самые пресловутые заглушки, о которых говорилось выше.

-~{}~ 15.10.04 12:00:

Originally posted by pacha
На данный момент SimpleTest имеет лучшую поддержку mock objects для php
Кто может охарактеризовать SimpleTest? Насколько принципиальны различия в возможностях с PEAR::pHPUint?
 

FreeSpace

Чукча-читатель
Сообщением выше можно увидеть ссылку:
http://www.lastcraft.com/simple_test.php
Сам вот-вот начну внедрять юнит-тестинг, используя этот класс.
 

Борис Федоров

Guest
Тестирование кода необходимо, поскольку на выяснение источника "плавающего глюка" уходит намного больше времени "потом" чем "сразу". Кстати во всех нормальных фирмах есть должность: тестер, без которого все выпускаемое ПО на 90% с глюками.
 

Mephistophel

Новичок
Originally posted by Борис Федоров
Тестирование кода необходимо, поскольку на выяснение источника "плавающего глюка" уходит намного больше времени "потом" чем "сразу". Кстати во всех нормальных фирмах есть должность: тестер, без которого все выпускаемое ПО на 90% с глюками.
Должность тестер, конечно, необходима, но:
Гораздо выгоднее по трудозатратам получается если на QA уходит софт с уже выловленными программными багами (насколько возможно), чтобы тестировать оставалось только логические ошибки, а не программные. У нас некоторое вермя назад была вообще сложная ситуация с качеством кода - из-за того, что приходилось писать быстро и с плохим тестированием испраление багов периодически выливалось в 10-20% времени, проданного на проект.
 

confguru

ExAdmin
Команда форума
Кто готов сделать доклад по
"Целесообразность unit-тестов" на 4-й PHP конференции?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Я бы сделал, но я так и не определился.
 

Mephistophel

Новичок
Originally posted by varan
Я бы сделал, но я так и не определился.
Не определился с чем? С тем, что использовать для юнит-тестинга или в целесообразности?
Со времени последнего поста в этой теме я достаточно далеко продвинулся используя SimpleTest. Результаты вроде бы положительные, и вполне соответствуют моим ожиданиям, так что, можно сказать, что в целесообразности я убедился :D
 
Сверху