Skip to content

Tips and tricks for people looking for C++ developer position at DORS company

Notifications You must be signed in to change notification settings

Kerminator1973/GTestProject

Repository files navigation

Тестовые технические задания для претендентов на вакансию разработчик unit-тестов на C++

Автоматизированное тестирование программного обеспечения в КБ ДОРС Unit-тесты является критически важной составляющей software development workflow.

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

В других проектах, автоматизированное тестирование применяется при выпуске продукта. Тесты выполняются после сборки продукта и его развертывания на testing node. Передача сборки в корпоративное хранилище возможно только в случае успешного выполнения автоматических тестов и соответствии метрик кода заданным параметрам.

В ряде случаев, автотесты используются maintainer-ами при принятии решения о дальнейшей судьбе Pull Request.

Инструментальные средства C++

Поскольку целевыми платформами для разработчиков КБ ДОРС являюся как Microsoft Windows, так и разные дистрибутивы Linux, необходимым условием является применение системы сборки CMake. CMake анализирует окружение и генерирует подходящие для окружения скрипты сборки проекта.

Для ознакомления с инструментом CMake рекомендуется к прочтению книга Rodovan Bast и Roberto Di Remigio «CMake Cookbook: Building, testing, and packaging modular software with modern CMake». Конспект книги на русском языке может быть запрошен у разработчиков КБ ДОРС.

В качестве инструмента организации Unit-тестов рекомендуется использовать библиотеку Google Test.

Для сравнения эффективности разных вариантов реализации алгоритмов на C++ рекомендуется использовать Google Benchmark. В случае, если создание полноценной среды разработки нежелательно, можно использовать специализированный сайт quick-bench.com/, предоставляющий готовую к использованию среду online.

Рекомендуется к ознакомлению рецепт из книги Rodovan Bast и Roberto Di Remigio, связанный с разработкой Unit-тестов. Так же кажется разумным озакомиться с книгой Hands-On: Design Patterns with C++ by Fedor G. Pikus.

Тестовое задание для программиста на C++

Разработчику на C++ предоставляются исходные тексты уже существующего компонента, либо программа методика испытаний (ПМИ) компонента планируемого к разработке.

Ожидаемый результат тестового задания:

  • скрипт сборки и исполнения Unit-тестов на CMake. Результат - файл CMakeLists.txt
  • скрипт должен находить на целевой системе, или загружать из интернет библиотеку Google Test
  • исходные тексты должны содержать Unit-тесты предоставленного программного компонента компонента
  • также ожидается сопроводительное письмо с оценкой полноты покрытия и предложения по оптимизации кода компонента (подкреплённые результатами Google Benchmark)

Рекомендуемые этапы выполнения задачи:

  • Установка компилятора С++, например, Microsoft Visual Studio Build Tools. Бесплатная версия Visual Studio - Community Edition
  • Установка Visual Studio Code (если необходимо) и вспомогательные plug-ins
  • Установка CMake
  • Установка Google Test
  • Установка Google Benchmark
  • Ознакомление и сборка рецепта из книги
  • Анализ исходных текстов предоставленного компонента
  • Разработка плана тестирования
  • Разработка кода Unit-тестов
  • Разработка скриптов для тестирования эффективности кода (Benchmarking)
  • Сравнение вариантов кода. Оценка эффективности кода
  • Документирование результатов

Дополнительно может быть разработан superbuild CMake-скрипт, который самостоятельно загружает Google Test, все используемые библиотеки и собирает их. superbuild решает следующие задачи:

  • Снижение сложности скриптов сборки, разделяя комплексный скрипт на несколько значительно более простых в работе скриптов
  • Управление зависимостями - библиотеками и инструментами, используемыми при сборке продукта

Выбор среды разработки

Microsoft Visual Studio Community Edition можно рассматривать как стандарт де-факто для операционных систем семейства Windows. Также продукт поддерживается на MacOS.

При необходимости разработки кода под Linux имеет смысл выбрать либо Visual Studio Code, либо Qt Creator.

Сильная сторона Visual Studio Code - огромное количество plug-ins, значительно упрощающих разработку кода.

Задачи по разработке Unit-тестов и сбора метрик производительности

Проверка уникальности сгенерированных случайных чисел в EMV-ядре.

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

Дополнительно

Пример инструкции по разработке консольного приложения на C++ с подключением к базе данных СУБД Postgres, с использованием библиотеки SOCI C++.

Использование vcpkg для загрузки и сборки популярных библиотек для C++. vcpkg - это package manager для C++.

About

Tips and tricks for people looking for C++ developer position at DORS company

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages