При тестировании распределенных систем нефункциональные требования выходят на первое место, а для обнаружения сложных дефектов приходится применять специальные методы. Мы уже говорили о них с Андреем Сатариным в предыдущем интервью и сегодня попытаемся развить эту тему.
Андрей Сатарин занимается тестированием распределенных систем в Яндексе. Принимал участие в совершенно разных проектах: тестировал игру в Mail.ru, систему облачного детектирования в Лаборатории Касперского, а также систему расчета валютных цен в Deutsche Bank.
— Отказоустойчивость — одно из важнейших нефункциональных требований к распределенным системам. Как проводится тестирование отказоустойчивости?
Андрей Сатарин: Сбои можно эмулировать в тестовой среде, так работает известный инструмент Jepsen, созданный Кайлом Кингсбери (Kyle Kingsbury). Второй подход предполагает внедрение сбоев в продуктивном окружении и обычно ассоциируется с Chaos Monkey компании Netflix, из которого выросло целое движение — хаос-инжиниринг. Он избавляет нас от проблем с повторением продуктовой среды и дает высокую уверенность в работоспособности системы, но более опасен и требует определенной зрелости продукта.
Есть и третий подход, позволяющий проверить работоспособность алгоритмов еще до написания кода с помощью специальных инструментов, таких, например, как TLA+. Два наиболее известных примера его использования: разработка Amazon Web Services и Azure Cosmos DB.
Софтверной компании, работающей на рынке эквайринговых технологий, в группу разработки программного обеспечения для клиент-серверных транзакционных систем требуется инженер - тестировщик.
Обязанности:
участие в тестировании информационных систем, взаимодействующих с пластиковыми смарт-картами;
разработка планов тестирования продуктов;
оценка трудозатрат на тестирование ПО;
участие в утверждении плана тестирования продуктов;
разработка тест-кейсов по утвержденному плану тестирования;
создание стендов для проведения тестирования;
проведение тестирования ПО по разработанным тест-кейсам;
регистрация выявленных ошибок в системах отслеживания ошибок;
контроль процесса исправления выявленных ошибок разработчиками ПО;
проверка ПО на предмет исправления ошибок;
участие в разработке ПМИ; выполнение сценариев по ПМИ;
составление отчетной документации по результатам тестирования;
участие в поддержании информационной инфраструктуры;
взаимодействие с разработчиками ПО, инженерами по внедрению и руководителями проектов
Требования:
опыт тестирования программного обеспечения не менее 1 года;
навыки разработки тест-планов и тест-кейсов;
знание методологий тестирования.
Желательно:
навыки автоматизированного и нагрузочного тестирования;
опыт применения JUnit;
опыт применения инструментов для тестирования интерфейсов веб-приложений;
опыт тестирования программного обеспечения для работы со смарт-картами;
знание спецификаций EMVCo, GlobalPlatform;
Условия:
работа в стратегически важном для компании направлении;
соблюдение трудового законодательства РФ.
заработная плата по результатам собеседования;
4 дополнительных выходных дня в году, 100% оплачиваемые отпуска и больничные листы;
Тестирование веб-приложений интересно тем, что оно требует наиболее широкого владения различными видами тестирования. Одно из ключевых мест занимает тестирование защищенности (security testing) или проверка отсутствия известных уязвимостей.
Почему тестирование защищенности имеет такое большое значение именно для веб-приложений?
Веб-приложения ориентированы на массовое использование, поэтому сбои в работе, вызванные действиями злоумышленника, могут оказать негативное воздействие на большое количество ни в чём неповинных пользователей.
Веб-приложения могут хранить конфиденциальную информацию, утечка этих данных может иметь очень серьёзные последствия.
Доступ к веб-приложению имеет множество “недоверенных” пользователей, при этом владельцы или разработчики приложения как правило не могут контролировать или ограничивать их действия.
Обмен информацией между браузером и сервером происходит по открытым каналам с использованием открытых протоколов, поэтому сложно контролировать данные, передаваемые клиентами.
Разработка веб-приложений не всегда ведётся с должным вниманием к обеспечению защищенности и надёжности, потому что рынок в первую очередь требует “быстро”!
Разумеется, тестирование защищенности не ограничивается тестированием самого веб-приложения. Уязвимость может находиться в веб-сервере, операционной системе, почтовой системе, ftp-сервере или ещё где-то. Но задача создания защищенного окружения в большей степени находится в зоне ответственности системных администраторов, а вот защищенность вашего собственного веб-приложения -- целиком на совести его разработчиков и тестировщиков.
На тренинге мы рассмотрим как общие принципы компроментации защиты веб-приложений, так и отдельные наиболее распространенные виды уязвимостей, которые могут быть использованы даже не слишком квалифицированным злоумышленником, что существенно повышает вероятность их эксплуатации.