Ограничение используемых ресурсов

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

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

Однако при юнит-тестировании могут возникнуть некоторые проблемы:

  • · Сложно оценить количество памяти, выделенной для самой тестируемой программы, а не для инструмента модульного тестирования. В связи с этой проблемой, превышение установленных лимитов может происходить за счет кода, который не является объектом тестирования.
  • · Не все инструменты тестирования позволяют регулировать время работы отдельных тестов. Так, например, фреймворк для тестирования приложений на языке C++ Google Test не позволяет останавливать тесты, по окончании заданного времени. Тем не менее, возможно контролировать время работы всех интеграционных тестов вместе, но в то же время теряется гранулярность проверки отдельных блоков кода, которые могут иметь различные требования к потреблению ресурсов.

Инструменты непрерывной интеграции

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

Наиболее популярными инструментами непрерывной интеграции являются: Jenkins (Hudson) [27], TeamCity (JetBrains) [28], Bamboo (Atlassian) [29] и другие.

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

 
< Пред   СОДЕРЖАНИЕ   Загрузить   След >