Группа разработки SDK в Twilio отвечает за создание и поддержку двух продуктов для связи в реальном времени — Twilio Client, набор веб- и мобильных SDK для совершения и приема VoIP-звонков, и Programmable Video, набор SDK для добавления возможностей видеосвязи в приложения разработчиков.
Мы на собственном опыте убедились, что требования к тестированию видео-SDK кардинально отличаются от требований к тестированию типовых REST-сервисов, поскольку наши команды разрабатывают как бэкенд-инфраструктуру, поддерживающую эти сервисы реального времени, так и SDK для разработчиков. За это время мы усвоили несколько важных уроков:
Во-первых, мобильная разработка предполагает особые аспекты тестирования и дополнительные нюансы.
Во-вторых, разработка медиа в реальном времени имеет свои уникальные требования.
Чтобы учесть все эти особенности, мы разработали уникальный и комплексный подход к тестированию, который позволяет нам быстро внедрять изменения и выпускать продукты с уверенностью в их качестве.
**Как мы тестируем SDK в сотрудничестве с TestDevLab**
В основе нашей системы тестирования лежит многоуровневый подход, аналогичный тому, который мы используем для тестирования наших сервисов. Этот подход предполагает несколько слоев тестов с постепенным расширением охвата — от юнит-тестов, проверяющих отдельные методы, до сквозных тестов, верифицирующих полные рабочие процессы системы.
К этой базе мы добавили тесты для различных сценариев, специфичных для мобильной разработки, таких как переключение сети между WiFi и LTE или обработка ситуаций, когда приложение уходит в фоновый режим.
Особое внимание мы уделяем потреблению ресурсов и разработали тесты, оценивающие расход трафика и заряд батареи наших SDK в различных сетевых условиях.
Одна из сложностей мобильной разработки — тестирование на широком спектре устройств, особенно в экосистеме Android. Для этого мы создали тестовую лабораторию с парком устройств, на которых тестируем наше ПО на актуальных и будущих версиях мобильных операционных систем. Аналогично для JavaScript-библиотек мы разработали набор автоматизированных тестов для обнаружения новых версий (разработческих, бета и стабильных) ведущих браузеров и автоматического запуска регрессионных тестов на этих версиях.
Наконец, мы создали серию тестов для измерения и обеспечения качества медиа. Мы используем стандартные алгоритмы для анализа аудио- и видеосэмплов с целью автоматического измерения рейтинга качества MOS*. Кроме того, применяем программные инструменты, соответствующие стандартам PEVQ и POLQA и основанные на перцептивных моделях человеческого слуха и зрения. Это дает нам ценное представление о качестве передачи медиа и уровне обслуживания при изменении ключевых параметров нашего медиастека. Эти измерения также позволяют оценить, как пользователи будут воспринимать наши SDK в различных сетевых условиях.
Поскольку всестороннее тестирование нового кода в мобильных средах включает множество аспектов и сценариев, мы пришли к выводу, что автоматизация критически важна. Мы также поняли, что усилия по обеспечению качества достаточно значительны, чтобы выделить их в отдельную команду, и создали такую команду, полностью посвященную контролю качества веб- и мобильных SDK.
Одним из факторов, сделавших наши усилия по обеспечению качества особенно успешными, стало сотрудничество с TestDevLab. TestDevLab работает как с REST API, так и с мобильной разработкой, а также обладает экспертизой в области тестирования качества медиа и производительности.
Сотрудничество с TestDevLab позволило нам использовать модель follow-the-sun, поддерживая процесс разработки в движении 24 часа в сутки.