Написание интеграционных тестов для тестирования базы данных, вызовов веб-сервисов - PullRequest
5 голосов
/ 23 ноября 2011

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

Но я хотел бы узнать еще несколько полезных методов.

Ответы [ 3 ]

5 голосов
/ 23 ноября 2011

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

. Также,тестовый код часто пропускается как ненастоящий код и, следовательно, не поддерживается должным образом ... это важнее, чем код .Как минимум столько же дизайна, должно войти в архитектуру ваших тестов.Запланируйте разумные уровни абстракции, т.е. если вы тестируете веб-приложение, подумайте о том, чтобы иметь такие уровни: абстракция взаимодействия с вашим браузером, абстракция ваших компонентов на страницах, абстракция страниц и ваши тесты.Тесты взаимодействуют со страницами и компонентами, страницы взаимодействуют с компонентами, компоненты взаимодействуют с уровнем взаимодействия с браузером, а уровень взаимодействия с браузером взаимодействует с вашей (возможно, сторонней) библиотекой автоматизации браузера.

Если ваш тестовый код не поддерживается должным образомили хорошо продуманные, они становятся помехой, а не помощником в написании нового кода.

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

2 голосов
/ 23 ноября 2011

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

Как уже говорилось, интеграционные тесты должны повторяться. Таким образом, я бы выбрал вариант 1, чтобы написать скрипт, который может воссоздать базу данных с нуля с тестовыми данными. Вариант 2 более сложный, поскольку трудно убедиться, что функция очистки не оставляет нежелательных остатков данных.

1 голос
/ 23 ноября 2011

При модульном тестировании DAL я делаю это так:

[TestFixtureSetUp]
public void TestFixtureSetUp()
{

    //this grabs the data from the database using an XSD file to map the schema
    //and saves it as xml (backup.xml)
    DatabaseFixtureSetUp();  
}

[SetUp]
public void SetUp()
{

    //this inserts test data into the database from xml (testdata.xml)
    //it clears the tables first so you have fresh data before every test. 
    DatabaseSetUp();  
}

[TestFixtureTearDown]
public void TestFixtureTearDown()
{
     //this clears the table and inserts the backup data into the database
     //to return it to the state it was before running the tests.
    DatabaseFixtureTearDown();
}
...