2010-12-27 3 views
1

Я разрабатываю проект с CodeIgniter и записываю модульные тесты и веб-тесты в SimpleTest. Я заметил, что мои тесты не детерминированы, т. Е. Вовремя производят разные результаты. Я имею в виду те тесты, которые должны быть строго детерминированными, не полагаясь на случайные величины и т. Д.SimpleTest WebTestCases, влияющие друг на друга, а не детерминированный результат

Испытания выглядят как затрагивающие друг друга. Довольно часто, когда все идет хорошо, я скажу 100 пройденных тестов, но когда я пишу новый метод тестирования, который терпит неудачу, то несколько других тестов также терпят неудачу. Но часто после исправления проблемы в моем неудачном тестовом случае и повторный запуск всего тестового набора 2-3 раза весь комплект дает пропуск снова.

Это обычно происходит с WebTestCases.

Есть ли у вас какие-либо идеи, в чем проблема?

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

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

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

Буду благодарен за подсказки, поскольку в Интернете действительно мало документации/записей в блогах/сообщениях о SimpleTest, за исключением его API на веб-сайте.

ответ

0

(редактирование: переместил ответ как отдельный пост)

Ха, я сделал довольно тщательное расследование, и кажется, что есть ошибка в библиотеке SimpleTest.

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

0

Вещь это может быть:

  • Caching - вы Кэширование плохих результатов где-то в цепи?
  • Непонимание - Вы уверены, что вы проверяете правильные вещи?
  • Bad Data - Если вы тестируете это на верхней частью базы данных, а также отказ испорченных данные в базе данных, вы можете увидеть результаты, как вы упоминания.
+0

Ничего из этого, но спасибо за предложения. Я опубликовал редактирование с тем, что я узнал. –

+0

Я вижу ... Это одна из многих причин, почему я предпочитаю не использовать набор тестов. – DampeS8N