WedX - журнал о программировании и компьютерных науках

Написание интеграционных тестов в тестовую базу данных, вызовы веб-сервисов

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

Но хотелось бы узнать еще несколько хороших практик.


  • Возможное дублирование stackoverflow.com/questions/1328730/ 23.11.2011
  • Я прочитал этот пост, но он больше о разделении быстрых и медленных тестов. 23.11.2011

Ответы:


1

При модульном тестировании 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();
}
23.11.2011
  • @ alice7, я рад, что я ответил на ваш вопрос. Из вашего вопроса было непонятно, чего вы хотели. Похоже, вам нужен совет о том, как структурировать классы модульных тестов. 27.11.2011
  • Мне нужна была помощь в структурировании интеграционных тестов и несколько советов, например, об использовании отдельной тестовой базы данных и т. Д. 29.11.2011

  • 2

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

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

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

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

    23.11.2011

    3

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

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

    23.11.2011
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]