×
Traktatov.net » Как тестируют в Google » Читать онлайн
Страница 42 из 192 Настройки

File: depot/addurl/BUILD

#  From  before:

proto_library(name="addurl",

                           srcs=["addurl.proto"])

#  Also  from  before:

cc_library(name="addurl_frontend",

                     srcs=["addurl_frontend.cc"],

                     deps=[

                             "path/to/httpqueryparams",

                             "other_http_server_stuff",

                             ":addurl",  #  Depends  on  the  proto_library  above.

])

#  New:

cc_test(name="addurl_frontend_test",

               size="small",  #  See  section  on  Test  Sizes.

               srcs=["addurl_frontend_test.cc"],

               deps=[

                       ":addurl_frontend",  #  Depends  on  library  above.

                       "path/to/googletest_main"])

И снова разработчик использует свои инструменты сборки для компилирования и запуска бинарного файла addurl_frontend_test, исправляет все обнаруженные ошибки компилятора и компоновщика. Кроме того, он исправляет тесты, тестовые фикстуры, имитации и саму AddUrlFrontend по всем падениям тестов. Этот процесс начинается сразу же после определения FixtureTest и повторяется при следующих добавлениях тестовых сценариев. Когда все тесты готовы и успешно проходят, разработчик создает список изменений, содержащий все файлы, а заодно исправляет все мелкие проблемы, выявленные в ходе предварительных проверок. После этого он отправляет список изменений на рецензирование и переходит к следующей задаче (скорее всего, начинает писать реальный бэкенд AddUrlService), одновременно ожидая обратной связи от рецензента.

$  create_cl  BUILD  \

                     addurl.proto  \

                     addurl_frontend.h  \

                     addurl_frontend.cc  \

                     addurl_frontend_test.cc

$  mail_cl  -m  reviewer@google.com

Получив обратную связь, разработчик вносит соответствующие изменения или вместе с рецензентом находит альтернативные решения, возможно — проходит дополнительное рецензирование, после чего отправляет список изменений в систему контроля версий. Системы автоматизации тестирования Google знают, что начиная с этого момента при внесении изменений в код, содержащийся в этих файлах, следует выполнить addurl_frontend_test и убедиться, что новые изменения не ломают существующие тесты. Каждый разработчик, который собирается изменять addurl_frontend.cc, может использовать addurl_frontend_test как страховку для внесения изменений.

Выполнение тестов

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

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