пятница, 1 декабря 2017 г.

Митап Op!DevOps! 2017

Открытое сообщество
DevOps-разработчиков
Open DevOps Community
Митап Op!DevOps! 2017 прошёл 21 октября в московском офисе компании Positive Technologies. Мы провели приятный субботний вечер и в узком, почти семейном кругу, обсудили проблемы автоматизации, которые удалось решить нашей DevOps-команде за прошедший год. Кроме того, мы рассмотрели некоторые технологии и инструменты, поделились планами развития DevOps в нашей компании.

Немного о докладах, видео и фоточки с митапа ниже.

среда, 2 августа 2017 г.

Проект учебника по Истории Математики

https://boomstarter.ru/projects/tgilmullin/istoriya_matematiki

Друзья и коллеги! Мы с моим отцом, учёным и преподавателем математики, издаем книгу — познавательный и современный иллюстрированный учебник по Истории Математики. Поддержите, пожалуйста, наш проект :) 

На Бумстартере можно сделать предзаказ на книгу и её электронный вариант, или оставить спонсорский взнос: https://boomstarter.ru/projects/tgilmullin/istoriya_matematiki

Лайки, репосты — приветствуются :) Подробнее о книге можно почитать в блоге или на страничке проекта.

вторник, 10 января 2017 г.

Митап Op!DevOps! 2016

Митап Op!DevOps! прошёл 7 октября 2016 г. в Москве. На нём в формате фаст-трека были озвучены проблемы в области автоматизации разработки и тестирования, а также предложены методы и средства их решения.

Подробнее по ссылке: https://habrahabr.ru/company/pt/blog/310584/


среда, 21 сентября 2016 г.

Миссия выполнима: как развить DevOps в компании со множеством проектов

Открыта регистрация на митап Op!DevOps! 
Оригинал статьи на habrahabr: https://habrahabr.ru/company/pt/blog/310584/ (ссылка на регистрацию внизу статьи)
О пользе внедрения DevOps уже написано множество статей на Хабре и других ИТ-ресурсах, и она не ставится под сомнение. Это понятно: творческому беспорядку с подчас неочевидными зонами ответственности «обычной» разработки, где разные люди отвечают за код, бранчи, тестовые стенды, сборку и деплой и не очень-то хотят лезть на «поляну» коллег, противопоставляется высокий уровень организации.

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


Но мало просто захотеть работать «правильно», нужно еще каким-то образом к этому прийти. А здесь все совсем не так просто.

пятница, 28 ноября 2014 г.

DevOps best practices: рекомендации по организации конфигураций в TeamCity

DevOps (Development + Operations)
Принимая участие в разработке нескольких сотен сборочных, деплойных и иных автоматических конфигураций для поддержки процессов разработки ПО, рано или поздно начинаешь находить в них и выделять общие решения, концепцию, архитектуру, схему взаимодействия конфигураций между собой. Предлагаю вам некоторые рекомендации в области разработки конфигураций, подходы и схему организации процессов сборки и тестирования ПО. Эти подходы были успешно опробованы мной и моими коллегами: Александром Паздниковым, Ярославом Акимовым и Алексеем Соловьёвым, для большого числа IT-проектов, на базе системы непрерывной интеграции TeamCity.

Частично вопросы организации процессов сборки и тестирования уже были рассмотрены в статье "TeamCity triggers & dependencies: построение процессов разработки и тестирования". В статье ниже приведена терминология основных понятий, используемых при описании конфигураций, рекомендуемый набор конфигураций для произвольного проекта, а также схема взаимодействия конфигураций для релизных и нерелизных сборок, деплоя, функционального тестирования. 


понедельник, 11 августа 2014 г.

Подходы к автоматизации процесса валидации уязвимостей, найденных автоматическими сканерами безопасности, при помощи нечётких множеств и нейронных сетей

Attention! По ссылке ниже ещё больше букв, чем в названии. А ещё много формул :-)


Диаграмма Эйлера-Венна для задачи классификации уязвимостейАннотация: В статье рассмотрены и формально решены проблемы автоматической классификации уязвимостей информационных систем. Поставлена задача нечёткой классификации уязвимостей. Проанализированы возможные способы решения данной задачи. Выбраны и построены измерительные шкалы для чёткой и нечёткой оценки свойств уязвимостей и степеней их принадлежности классам. Для различных интерпретаций результатов указаны функции связи между шкалами. Предложена матрица кодирования свойств уязвимостей. Предложена архитектура нейронной сети для классификации уязвимостей. Разработаны программные модули для нечёткой классификации произвольных объектов, представленных векторами признаков для различного числа классов и структуры нейронной сети.


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

Опубликовано:
Гильмуллин Т.М., Гильмуллин М.Ф. Подходы к автоматизации процесса валидации уязвимостей, найденных автоматическими сканерами безопасности, при помощи нечётких множеств и нейронных сетей // Фундаментальные исследования. – 2014. – № 11 (часть 2). – стр. 266-279;
URL: www.rae.ru/fs/?section=content&op=show_article&article_id=10004779

вторник, 8 июля 2014 г.

TeamCity TestRuns on Rails: распараллеливаем тест-раны и агрегируем статистику

В автоматизации тестирования часто требуется распараллелить запуск тестовых сьюитов и при этом собрать общую статистику в едином отчете по тест-рану. Можно решить эту задачу, создав собственный парсер результатов прогона каждого тест-сьюита, а можно воспользоваться механизмом зависимых конфигураций в TeamCity, о которых было написано в статье "TeamCity triggers & dependencies: построение процессов разработки и тестирования". Суть этого подхода проста: нужно добавить в TeamCity конфигурации для запуска отдельных тест-сьюитов, а также конфигурацию для основного тест-раннера, который будет запускать сьюиты и агрегировать их результаты используя механизм зависимых конфигураций.

понедельник, 7 июля 2014 г.

TeamCity triggers & dependencies: построение процессов разработки и тестирования

В процессах разработки и тестирования программного обеспечения всегда можно выделить отдельные подпроцессы:
  • сборку или компиляцию (building, compilation) программных модулей из исходных кодов,
  • модульное unit-тестирование,
  • подготовку дистрибутивного пакета из собранных модулей,
  • тестирование сборки (Build Verification Testing),
  • сохранение дистрибутива в некоторой системе репозиториев,
  • проверка основной функциональности при помощи smoke-тестирования,
  • прочие виды тестирования: функциональное, интеграционное, стресс-тестирование, UI-тестирование, тестирование инсталляции, удобства использования, и т.д., которые также можно выделить в отдельные подпроцессы.
Каждый из подпроцессов обычно стремятся автоматизировать, связать друг с другом в единый процесс, непрерывный и зависящий от результатов каждого подпроцессв. В системе интеграции TeamCity, кроме непосредственно разработки конфигураций для автоматизации чего-либо, возможно организовать такие взаимосвязанные процессы. Для этого в ней предусмотрены механизмы триггеров (triggers) и зависимостей (dependencies) конфигураций. Рассмотрим их использование на примере двух разнонаправленных процессов: подготовки дистрибутива (I) и его тестирования (II).

вторник, 10 июня 2014 г.

Мета-раннеры в TeamCity

Как известно, основными понятиями TeamCity являются: проекты (подпроекты), билд-конфигурации и шаблоны. Проекты используются для организации иерархии, билд-конфигурации описывают действия (программные шаги), а шаблоны хранят описания часто используемых билд-конфигураций. Однако, на практике иногда возникает необходимость подняться на более высокий уровень абстракции и включить в шаги билд-конфигурации действия из других билд-конфигураций. Для этого используются мета-раннеры.

Мета-раннер (TeamCity Meta-Runners) - это "раннер в раннере", это инструмент, который позволяет выделить из отдельных билд-конфигураций общие повторяющиеся действия и перенести их на уровень выше. Мета-раннеры позволяют использовать шаги одной билд-конфигурации в других билд-конфигурациях целиком, как отдельный параметризуемый шаг. Если шаблон конфигурации можно сравнить с параметризованной функцией в программировании, то мета-раннер - это класс, в понятиях ООП.

пятница, 18 апреля 2014 г.

Использование TeamCity в качестве системы управления запуском функциональных авто-тестов

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

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

вторник, 28 января 2014 г.

Работа в Positive Technologies!

Уважаемые автоматизаторы и инженеры-тестировщики!

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

Пожелания с технической стороны:
  • Уверенное владение хотя бы одним из этих языков: PHP, Java, Python, C#
  • Опыт автоматизации тестирования или разработке ПО от 1 года
  • Хорошее знание основ тестирования ПО
  • Отличное понимание принципов работы WEB и знание сетевых протоколов
  • Понимание принципов работы AJAX

вторник, 19 ноября 2013 г.

Автоматизация нагрузочного тестирования при помощи инструмента Яндекс.Танк

В ходе тестирования некоторых продуктов компании Positive Technologies наша команда тестировщиков-автоматизаторов столкнулась с необходимостью проведения быстрых стресс-тестов для одного http веб-сервиса. Такие тесты должны были быть простыми и быстрыми в разработке, не требовательными к аппаратным ресурсам, должны давать значительную нагрузку однотипными http-запросами, предоставлять статистические данные для анализа системы под нагрузкой.

Для их реализации мы исследовали и опробовали некоторое количество инструментов, среди которых был и Apache JMeter, о котором было рассказано ранее, и даже сделанный нами самодельный инструмент LogSniper, написанный на Python, который выполнял реплей заранее подготовленных серверных логов с http-запросами на цель.

Использование JMeter-а мы отклонили из-за значительной сложности подготовки и проведения тестов, высоких требований к производительности нагрузочного стенда и довольно малых мощностей нагрузки при этом, хотя это и компенсировалось высокой информативностью показателей собираемой статистики. А LogSniper был отклонён из-за малой мощности генерируемой нагрузки и даже простота подготовки нагрузочных http-пакетов не могла стать большим преимуществом. Другие инструменты также были отклонены по тем или иным причинам.

В итоге мы с моим коллегой Олегом Каштановым остановились на инструменте Яндекс.Танк (yandex-tank), о котором узнали побывав на конференции YAC-2013 и пообщавшись со специалистами Яндекса на эту тему. Этот инструмент полностью отвечал всем нашим требованиям к простоте подготовки теста и к генерируемой нагрузке.

среда, 6 ноября 2013 г.

Pairwise testing: добиваемся оптимального покрытия различных тестовых комбинаций

В тестировании программ очень часто встаёт задача проверки комбинаций входных параметров, от которых зависит итоговый результат программы. Типичный пример - диалоговое окно печати файла: оно имеет множество настроек, полей ввода, различных взаимозависимых опций, от включения или выключения которых итоговый результат может сильно различаться. Если бы даже все опции имели только два режима работы (вкл/выкл), а всего опций было бы 10, то это уже даёт 210 = 1024 их комбинаций.

Конечно, чтобы убедиться в работоспособности программы, в идеале нужно проверить все тестовые наборы, состоящие из всех возможных комбинаций параметров, так как для одной из них она может работать некорректно. Но, во-первых, таких тестовых наборов может получиться достаточно много и будет трудоёмко их все проверить. Во-вторых, при тестировании обычно желают получить не сочетания всех параметров со всеми, ведь в этом случае будет труднее локализовать дефект и воспроизвести проблему, а проверить отдельные пары значений параметров, которые могут привести к проблеме. Для упрощения подбора таких пар используют методику Pairwise testing, которая позволяет выделить комбинации уникальных пар проверяемых значений и одновременно уменьшить число тестовых наборов, по сравнению с полным перебором.


пятница, 1 ноября 2013 г.

Mind-map: использование интеллект-карт при составлении тест-планов

В начале тестирования каждого нового программного продукта всегда возникает множество вопросов: что тестировать, как тестировать, когда тестировать, каковы приоритеты тестирования и т.п. При этом обычно руководство желает узнать ответы на эти вопросы от отдела тестирования как можно быстрее. В таких ситуациях часто не остаётся ничего другого, как использовать технику мозгового штурма (brainstorming). 

В нашей команде автоматизаторов-тестировщиков уже сложилась традиция: использовать для быстрого анализа предметной области так называемые интеллект-карты (Mind Map, диаграмма связей, ассоциативная карта).

четверг, 26 сентября 2013 г.

Crawljax: Автоматизация краулинга web-приложений


Crawljax: Crawling Ajax-based Web Applications - это Java-инструмент с открытым исходным кодом, которое позволит вам протестировать ваше web-приложение фактически имитируя действия пользователя по браузингу сайта. Crawljax может исследовать сайт использующий технологию ajax, при этом автоматически создавая динамический граф состояний DOM.

Для тех кому требуется проводить инвентаризацию сайта, может понравиться возможность снятия скриншотов каждого состояния и странички сайта так, как это выглядит в реальном браузере. Crawljax использует для этого движки реальных браузеров, работая через Selenium WebDriver.

пятница, 31 мая 2013 г.

Python + Selenium WebDriver: фреймворк для тестирования web-приложений

Selenium WebDriver - это набор многофункциональных библиотек, используя которые в вашем проекте вы можете писать GUI-тесты для web-приложений. При этом каждый тест запускается в реальном браузере и команды Selenium позволяют имитировать действия пользователя с web-приложением. Подробнее об установке и настройке Selenium WebDriver можно почитать в статье: "Работа с Selenium Web Driver". А в этой будет показано, как можно написать свой фреймворк на Python для GUI-тестирования используя WebDriver.

понедельник, 13 мая 2013 г.

Общие подходы и критерии тестирования сканеров безопасности web-приложений

Сканеры информационной безопасности (или сканеры уязвимостей это программно-аппаратные средства мониторинга и контроля информационной безопасности сетевой инфраструктуры. Сканеры информационной безопасности (ИБ) позволяют проверять  информационные системы: компьютерные сети, отдельные компьютеры и установленные на них приложения на наличие уязвимостей, эксплуатация которых злоумышленниками может нанести ущерб организации, которой принадлежит данная инфосистема. Большинство сканеров безопасности позволяют детектировать уязвимости описанные классификатором WASC Threat Classification

С тестированием ИБ и основными определениями в этой области можно ознакомиться в нашей прошлой статье: "Основы тестирования безопасности web-приложений". В данной статье попытаемся рассмотреть вопросы, связанные с тестированием сканеров информационной безопасности web-приложений как программных продуктов.

понедельник, 4 марта 2013 г.

Подходы к оценке качества релизов программного обеспечения

В современных компаниях по разработке программного обеспечения (ПО), обычно используется подход итеративного создания, развития и улучшения программ, включающий в себя этапы:
  • анализ запросов (analysis) заказчика 
  • планирование и постановка задач разработчикам для очередного цикла разработки (planning);
  • разработка ПО (develop) программистами;
  • тестирование (testing) решенных программистами задач;
  • релиз (release) – итог очередной итерации разработки ПО;
  • передача, внедрение (update) и апробация релиза у заказчика.

Нагрузочное тестирование при помощи JMeter

Структура статьи:

Основы тестирования безопасности web-приложений

Работа с Selenium Web Driver

Разработка функциональных тестов при помощи RobotFramework

Разработка функциональных тестов при помощи Selenium

Структура статьи:
    1.1 План разработки автоматических функциональных тестов.

воскресенье, 3 марта 2013 г.

Общие сведения о тестировании web-приложений

Структура статьи:

xPath: идентификация элементов на web-форме

Язык запросов xPath служит для упрощения доступа к элементам web-формы, расположенным в DOM. Очень часто его используют в таких средствах автоматизации тестирования, как Selenium IDE и Selenium WebDriver.

Аутентификация в Linux с помощью ключевой пары

Задача: требуется аутентифицировать машину Клиента (user: client_username, host: client_host) на машине Сервера (remote user: server_username, host: server_host). 
Решение:

среда, 27 февраля 2013 г.

Настройка git pre-commit hook под Windows

Задача: запретить коммиты кода в git-е под Windows, если для Python-проекта не прошли все указанные юнит-тесты.
Решение: настроить файл git pre-commit hook.

суббота, 23 февраля 2013 г.

Контроль целостности кода функций

В ходе разработки сложной многокомпонентной системы для автоматизированного тестирования сканера безопасности, возникла проблема контроля целостности и проведения ревизий кода отдельных тестовых функций. Функциональных тестов, запускаемых системой, было написано уже около 2 сотен и их число продолжает увеличивается. В нашем случае один функциональный тест - это одна функция. Как правило, после разработки теста и постановки ему статуса "готов" в некотором трекере, о нём забывают и надолго. Однако, в процессе разработки других тестовых функций часто возникает необходимость проведения рефакторинга, которая по невнимательности тестировщика-автоматизатора может затронуть и уже готовые, отлаженные тесты.

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

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

понедельник, 15 октября 2012 г.

httest: HTTP Test Tool

httest - набор инструментов для подготовки всех видов тестовых сценариев для приложений, использующих HTTP-протокол. Есть версии под Windows/*NIX/MacOS. Благодаря своей простой конструкции (требуется только бинарный файл httest) он может использоваться на любых серверах для различных аналитических целей. Области применения httest разнообразны и включают в себя как простые тесты, так и технические проверки, тестирование производительности и мониторинга системы. Простой синтаксис позволяет неспециалистам быстро понять и написать тесты.

четверг, 11 октября 2012 г.

httpbin: HTTP Request & Response Service

httpbin - это python-сервер, который возвращает стандартные ответы на запросы клиента. 
Часто требуется проверить тот или иной функционал вашего сетевого приложения. httpbin может пригодиться для тестирования корректной работы HTTP-клиента со стандартными ответами HTTP-сервера.

пятница, 28 сентября 2012 г.

Генератор уязвимых динамических сайтов - OWASP Site Generator

OWASP Site Generator - конструктор динамических web-сайтов на основе конфигураций, задаваемых в XML-файлах. Он позволяет быстро создавать Java-приложения, содержащие стандартные уязвимости, как простые, так и сложные, описываемые классификатором WASC. Генератор охватывает широкий круг технологий web-разработки. В конструкторе имеются, например, различные варианты навигации, шаблоны HTML, JavaScript, Flash, Java, форм регистрации и авторизации, поддержка работы с БД и другие возможности. По основному функционалу web-приложения, создаваемые генератором, схожи с уязвимым приложением DVWA, но отличаются тем, что вы можете сами задавать наборы уязвимостей и структуру приложения.

OWASP Site Generator можно использовать:
  • для оценки работы сканеров безопасности web-приложений,
  • для оценка систем защиты web-приложений,
  • для обучения web-разработчиков,
  • как Web Honeypot - приложение-ловушку для злоумышленников,
  • как web-приложение для penetrating testing конкурсов,
  • как учебное пособие для дисциплин, связанных с информационной безопасностью,
  • как инструмент тестировщиков для проведения сравнительных тестов сканеров безопасности, и многого другого.

вторник, 25 сентября 2012 г.

Password Bruter - программа для многопоточного подбора учетных данных к страничкам с form-based авторизацией

Перед разработчиками и тестировщиками web-приложений периодически встают задачи тестирования безопасности разрабатываемого продукта. Один из наиболее известных классификаторов угроз и уязвимостей для web-приложений - The Web Application Security Consortium (The WASC) Threat Classification v2.0.
Одна из популярных уязвимостей (Weaknesses - в классификаторе), встречающихся для web-приложений - это недостатки подсистемы авторизации (WASC-02 Insufficient Authorization). На web-приложение, имеющее данную уязвимость, могут попытаться осуществить атаку (Attacks - в классификаторе) типа "Брутфорс" (WASC-11 Brute Force). При этом злоумышленник может попытаться осуществить подбор учетных данных на странице авторизации, если она недостаточно защищена.
К недостаткам защиты страницы авторизации можно отнести:
- отсутствие ограничения по числу попыток авторизации,
- отсутствие поля для ввода дополнительной информации - капчи (capture),
- отсутствие временной задержки между попытками авторизации и другие.
Наличие указанных недостатков в реализации подсистемы авторизации упрощает злоумышленнику доступ к web-приложению.
Одна из разновидностей атаки брутфорсом - подбор учетных данных (Brute Forcing Log-in Credentials) для страницы авторизации (Form-based Auth). Для имитации данного типа атаки был написан свой многопоточный брутфорсер Password Bruter на Python 3.2. В качестве цели было развернуто и использовано уязвимое web-приложение Damn Vulnerable Web Application (DVWA).

четверг, 13 сентября 2012 г.

Краулер ссылок и автоматизация процесса снятия скриншотов

Перед нами стояла задача: автоматизировать процесс снятия скриншотов со страничек web-приложения - некоторого сайта. Требовалось:
  1. Получать стартовый URL.
  2. Искать на страничке, полученной по стартовому URL все ссылки на другие странички.
  3. Переходить по всем найденным ссылкам и делать скриншоты со всех страничек.
  4. Ограничивать глубину вложенности при прохождении найденных ссылок.

воскресенье, 2 сентября 2012 г.

Безопасность и тестирование

Начинаю выкладывать в  данный блог  материалы связанные с информационной безопасностью и тестированием программного обеспечения. Статьи, в основном, будут иметь практическую и научную направленность. Статьи и их содержимое будут исправляться и дополняться по ходу изучения новых материалов.
Все материалы, представленные здесь, получены в ходе работ в Казанском государственном техническом университете им. А.Н. Туполева (КАИ), группе компаний Центр (г. Казань), компании Positive Technologies (г. Москва).

В качестве введения в область практического тестирования программного обеспечения, предлагаю ознакомиться со статьями: