Как проверить веб-код?

голоса
11

Кто-нибудь есть несколько хороших советов для написания тестового кода для разработки баз данных серверной, где есть тяжелая зависимость от государства?

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

Есть люди, как правило, делают отдельную систему разработки с «замороженными» базой данных, так что любая данная функция всегда должна возвращать один и тот же набор результатов?

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

Есть ли хорошие статьи, что там обсуждать этот вопрос веб-разработки в целом?

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

Задан 05/08/2008 в 22:58
источник пользователем
На других языках...                            


10 ответов

голоса
5

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

Обновление: Быстрый поиск Google показал расширение блока DB для PHPUnit.

Ответил 05/08/2008 d 23:03
источник пользователем

голоса
3

Если вы в основном касаются тестирования уровня данных, вы можете проверить эту книгу: XUnit Test Patterns: Refactoring тестовый код . Я всегда был уверен , об этом сам, но эта книга делает большую работу , чтобы помочь перечислить проблемы , как производительность, воспроизводимость и т.д.

Ответил 06/08/2008 d 05:14
источник пользователем

голоса
2

Мы используем в памяти базы данных (HSQL: http://hsqldb.org/ ). Hibernate ( http://www.hibernate.org/ ) делает его легким для нас , чтобы указать наши модульные тесты на тестирование БД, с дополнительным бонусом , что они работают так же быстро , как молния ..

Ответил 10/09/2008 d 13:02
источник пользователем

голоса
2

Я предполагаю, что это зависит от того, что базы данных вы используете, но Red Gate (www.red-gate.com) сделать инструмент под названием SQL Data Generator. Это может быть сконфигурировано для заполнения базы данных с чувственными данными перспективных испытаний. Вы также можете сказать ему, чтобы всегда использовать один и то же семя в генераторе случайных чисел, так что ваши «случайные» данные же каждый раз.

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

Что касается тестирования веб стороны вещей, я в настоящее время изучаю Селен (selenium.openqa.org). Это , как представляется, кросс-браузер , способный тестовый набор , который поможет вам функциональность тестирования. Однако, как и все эти испытания веб - сайта инструментов, нет никакого реального способа , чтобы проверить , насколько хорошо эти вещи выглядят во всех браузерах без литья человеческого глаза над ними!

Ответил 06/08/2008 d 14:44
источник пользователем

голоса
1

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

Ответил 10/09/2008 d 12:31
источник пользователем

голоса
1

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

Способ тестирования кода базы данных является:

  1. Вставьте несколько строк (с помощью SQL) для инициализации состояния
  2. Выполнить функцию, которую вы хотите проверить
  3. Сравнить ожидается с фактическими результатами. Здесь вы можете использовать обычную основу модульного тестирования
  4. Очистка строки, которые были изменены (так что следующий запуск не будет видеть предыдущий пробег)

Очистки могут быть сделаны стандартным образом (конечно, только в базе данных тестирования) с DELETE * FROM table.

Ответил 19/08/2008 d 19:40
источник пользователем

голоса
1

Вот моя стратегия (я использую JUnit, но я уверен, что есть способ сделать эквивалент в PHP):

У меня есть метод, который работает, прежде всего из модульных тестов для определенного класса DAO. Она помещает базу данных Дев в известное состояние (добавляет все тестовые данные и т.д.). Как я запускать тесты, я отслеживать любые данные добавлены в известное состояние. Эти данные очищаются в конце каждого теста. После того, как все тесты для класса побежали, другой метод удаляет все тестовые данные в базе данных DEV, оставляя его в состоянии, которое было до того были проведены испытания. Это немного работы, чтобы сделать все это, но я обычно пишу методы в классе DBTestCommon, где все мои классы тестов DAO может добраться до них.

Ответил 11/08/2008 d 14:30
источник пользователем

голоса
1

Вы можете попробовать http://selenium.openqa.org/ больше для тестирования GUI , а не приложение тестирования уровня данных , но делает запись ваших действий , которые затем могут быть воспроизведены для автоматизации тестов на различные платформы.

Ответил 06/08/2008 d 13:06
источник пользователем

голоса
1

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

Затем вы можете использовать что-то вроде Селена легко проверить с вашего пользовательского интерфейса (предполагая, что веб-здесь, но есть много тестирования UI инструментов там для других UI-ароматизаторов) и обнаружить наличие определенных записей отстранилось из базы данных.

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

Ответил 05/08/2008 d 23:08
источник пользователем

голоса
1

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

Я никогда не использовал никакого тестирования блока или тому подобного, так не могу сказать, если он работает или нет извините.

Ответил 05/08/2008 d 23:03
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more