Обновить
113.33

Тестирование IT-систем *

Тестируем все и вся

Сначала показывать
Порог рейтинга
Уровень сложности

Нечёткое тестирование свойств

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.2K

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

Я собираюсь рассказать о том, как правильно тестировать код в изоляции (интеграционные тесты — зверь из соседнего вольера, и о нем — в другой раз). Для этого нам потребуется пара определений. Фаззинг (от английского fuzzing) — это способ тестирования, при котором программе скармливают огромные объемы случайных, полуслучайных или вообще намеренно испорченных данных, с надеждой выявить уязвимости или баги. Изначально этот метод применялся в академической среде для поиска дыр в безопасности, но быстро перекочевал в руки здравомыслящих разработчиков. Property-based testing, в свою очередь, представляет собой подход к тестированию, где вместо проверки конкретных примеров типа «дважды два — четыре» мы формулируем общие свойства системы. Например: «если функция принимает список и возвращает список, то длина результата не должна превышать длину входа». А дальше уже инструмент генерирует тысячи, миллионы вариантов входных данных и проверяет, соблюдается ли это условие.

Taste it!

Новости

Бесплатная нейросеть-астролог с разбором натальных карт — как и зачем мы его запилили

Время на прочтение9 мин
Охват и читатели6.8K

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

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

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

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

Читать далее

Создаем свой проектный фреймворк автотестирования API [Часть 1/3]

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.3K

Автоматизированное тестирование API часто начинается с простых решений в виде коллекций Postman или скриптов на коленке. Такой подход работает на старте, но быстро исчерпывает себя.

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

Статья поделена на три части.

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

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

Читать далее

Универсальный автогенератор тестов API на базе Schemathesis

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели9.4K

Универсальный автогенератор тестов API на базе Schemathesis

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

Читать далее

Гадание на взломах. Предсказательная сила EPSS

Время на прочтение4 мин
Охват и читатели6.2K

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

Читать далее

Как устроено фаззинг-тестирование на Go, которое знает о ваших багах больше, чем вы сами

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели9.5K

Привет, Хабр! Меня зовут Иван, я инженер по информационной безопасности в департаменте разработки общей платформы компании YADRO. Я занимаюсь фаззинг-тестированием уже два года, через мой фаззинг прошло много кода на языках C и Go. 

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

Читать далее

Тестирование с плагинами из маркетплейса GigaIDE

Время на прочтение4 мин
Охват и читатели7.4K

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

Читать далее

Ручное управление не делает нас сильнее: как я написал клиент для автоматизации тестирования

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели9.5K

Всем привет! Меня зовут Стас, я ведущий инженер отдела сертификационного тестирования компании YADRO. Однажды мне стало лень вручную проставлять статусы тестов PASSED/FAILED в TestY TMS, и я написал свое клиент-серверное приложение ATS Studio. С его помощью я залечил боль ручного управления для нескольких команд YADRO.

Как мне это удалось, если я не пишу код на Python, и чему я научился в процессе, узнаете под катом.

Читать далее

Словарь flaky-тестов

Время на прочтение10 мин
Охват и читатели6.9K

Flaky-тесты — это вполне измеряемая форма недетерминизма, вокруг которой в исследованиях накопился свой язык. В разных статьях одни и те же слова могут означать чуть разное: где-то считают переходы pass↔fail, где-то смотрят на энтропию истории прогонов, где-то обсуждают карантин и компромисс FR против LFD. В этой статье — короткий словарь самых ходовых терминов, чтобы говорить о нестабильности тестов точным языком.

Читать далее

Округление как зеркало корпоративной культуры в IT-продуктах

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели8K

Представление чисел в IT сфере - одна из самых простых вещей, которую интуитивно знает каждый разработчик, аналитик, тестировщик, админ (нужное подчеркнуть).

Еще из школы мы помним: Округление — замена числа на его приближённое значение (с определённой точностью), записанное с меньшим количеством значащих цифр. 

Точные определения и механизмы легко гуглятся.

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

Читать далее

Три промпта — три результата: как качество запроса определяет качество автотестов

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели5.1K

Все говорят, что AI пишет код за секунды. Это правда. Но почему-то редко уточняют: какой именно код он пишет. Спойлер — это сильно зависит от того, как вы спросили. И ещё сильнее — от того, что вы вообще знаете о предмете.

В Ростелекоме мы уделяем особое внимание развитию экспертизы сотрудников. Это не просто корпоративный слоган — это осознанная стратегия. Мы понимаем, что технологии меняются быстро, но фундаментальные знания остаются ценными десятилетиями. Поэтому в компании работает система внутреннего обучения: курсы по автоматизации тестирования, менторинг от senior-специалистов, разбор реальных кейсов из проектов.

И когда появились AI-ассистенты, возник логичный вопрос: может, теперь курсы не нужны? Зачем учить людей писать тесты, если нейросеть сделает это за них? Некоторые коллеги из индустрии уже начали сокращать обучающие программы, делая ставку на "AI справится".

Мы в Ростелекоме решили не гадать, а проверить эту гипотезу на практике. Провели эксперимент: попросили AI-ассистента написать автотесты для классического PetStore API тремя разными способами. Первый запрос — как написал бы новичок, который только что узнал про AI. Второй — как специалист с базовым пониманием автоматизации. Третий — как инженер после наших внутренних курсов, с глубоким пониманием архитектуры тестовых фреймворков.

Результаты оказались настолько показательными, что мы решили поделиться ими с сообществом.

Читать далее

Теория и практика интеграции СХД с OpenStack

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели8.6K

Всем привет! Меня зовут Карина Кошева. Я тестирую совместимость СХД с системами виртуализации в YADRO. Мы проводим такое тестирование, потому что нам важно проверять, насколько успешно система будет работать в инфраструктуре заказчика.

Нам важно не только проверить базовую функциональность, но и убедиться, что СХД выдержит типичные и нетипичные сценарии заказчика: высокую нагрузку сотен и тысяч ресурсов, постоянные операции чтения и записи, работу со снапшотами и редкие, но критичные сценарии отказов компонентов. Именно это дает нам тестирование под нагрузкой. Как мы проводим такое тестирование, читайте под катом.

Читать далее

За пределами юнит-тестов: как обрести уверенность в сложных системах

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.9K

Юнит-тесты дают чувство контроля — ровно до первого странного падения «только у одного клиента», под нагрузкой, на другой версии ядра, с неожиданными сетевыми ретраями и капризами аллокатора. В Quasar, распределённой системе хранения данных в реальном времени, эту реальность приняли как исходную: предугадать всё невозможно, поэтому уверенность строится не на одном виде тестов и не на «серебряных пулях», а на процессе, который ловит ошибки как можно раньше и системно закрывает зоны риска.

Читать далее

Ближайшие события

Разделяй и тестируй: @DataJpaTest и @WebMvcTest для быстрых тестов Spring Boot

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.5K

Привет, Хабр! Cегодня рассмотрим, как ускорить интеграционные тесты в Spring Boot с помощью специальных slice аннотаций.

Начнём с того, почему вообще тесты могут быть медленными. Используя @SpringBootTest, мы просим Spring Boot поднять весь контекст приложения для каждого тестового класса. У нас доступны все бины, но часто все это избыточно. Например, хочется протестировать контроллер, а Spring загружает ещё и базу данных, и сервисы, и шлёт запросы к Kafka. В результате простой тест метода контроллера может запускаться несколько секунд, пока поднимется веб‑сервер, инициализируется база, подтянутся все классы.

Эту проблему осознали и добавили так называемые test slice‑аннотации. Все простоб грузим не весь контекст, а только срез приложения, например, только веб‑слой или только слой доступа к данным. Spring Boot содержит готовые slice‑аннотации для основных слоёв: @WebMvcTest для веб, @DataJpaTest для JPA‑репозиториев, и ещё пачку для других случаев.

Рассмотрим на примерах двух интересных слайса: @DataJpaTest и @WebMvcTest.

Читать далее

Думает как хакер, действует как пентестер: что такое автоматическое тестирование на проникновение

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.9K

Всем привет!

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

В этой статье наши эксперты — Паша Попов, руководитель направления инфраструктурной безопасности, и Ярослав Бабин, директор по продуктам для симуляции атак, — разбираются, что такое контролируемый автоматический пентест, как он интегрируется с процессом управления уязвимостями и как в нем применяется ИИ.

Читать далее

Тест-менеджмент по agile: работающая документация

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.5K

В крупных проектах управлять качеством вручную — весьма нетривиальная задача: объем требований и фичей, уточнений и доработок, баков и фиксов растет нелинейно, а риски — экспоненциально. В таких условиях необходимо структурировать процесс обеспечения качества (QA), чтобы предотвратить эффект «снежного кома», который может «завалить» тестировщиков — сначала фрустрацией от рутины, а потом недовольством заказчика.

Читать далее

Ваша работа — выпускать код, который доказанно работает

Время на прочтение3 мин
Охват и читатели8.3K

Во всех обсуждениях ценности ИИ-помощников в разработке ПО мне встречается одна печальная история: разработчик-джун, вооружившийся каким-нибудь LLM-инструментом, создаёт для своих коллег или мейнтейнеров опенсорс-проекта огромный нетестированный PR, ожидая, что всё остальное решится благодаря процессу код-ревью.

Такое поведение грубо, оно заставляет других людей впустую тратить время и идёт вразрез с долгом разработчика ПО.

Ваша задача — выпускать код, который доказанно работает.

Мы, разработчики ПО, не просто производим код; сегодня даже можно сказать, что для этого предназначены LLM. Мы должны выпускать код, который работает, и приложить к нему доказательство его работы. Если вы этого не делаете, то просто сбрасываете бремя настоящей работы на того, кто должен будет проверять ваш код.

Читать далее

Termidesk Connect vs BIG-IP F5 и Citrix NetScaler: новичок и классика в нагрузочных тестах

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели7.4K

Привет, Хабр! Меня зовут Ильнар Зайнуллин, я системный инженер в К2Тех. Сегодня хочу поговорить о балансировщиках. Пока всё хорошо, о них вспоминают разве что при плановом расширении, очередной миграции или когда нужно красиво разрулить сертификаты. Когда же внезапно начинаются жалобы «подтормаживает», «отваливается», «иногда долго открывается» — балансировщик быстро становится «главным подозреваемым», даже если на самом деле виноваты сеть, backend или конкретный клиент.     

В этой статье рассмотрим три решения для закрытия проблемы с «главным подозреваемым»: F5 BIG-IP, Citrix NetScaler и Termidesk Connect. Если решения от F5 и Citrix хорошо известны на рынке, то Termidesk Connect — достаточно молодое решение от «Группы Астра». Релиз версии 1.0 состоялся весной 2025 года, под конец года вышел релиз 1.2 — его-то я и разберу в статье.

Читать далее

Как тестировщику написать bug report на английском

Время на прочтение5 мин
Охват и читатели5.7K

Когда я работала техническим писателем в международной команде, bug reports частенько попадались мне на глаза. И довольно быстро стало понятно: 90% багов написаны одними и теми же конструкциями, просто в разном порядке. Ниже - концентрат того, что часто используется в bug reports на английском. Сохраняйте.

Читать далее

Археология автотестирования: SUnit, прародитель JUnit

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели3.7K

Привет, Хабр.

Меня зовут Михаил, я технический автор, работаю с инструментами тестирования в команде ТестОпс. В какой-то момент мне стало интересно — а как получила распространение мысль о том, что разработчикам тоже надо писать тесты?

У меня было смутное представление о некотором тёмном «раньше», и условно-ограниченно-просвещённом «сейчас», когда мысль о том, что тестирование не должно жить отдельно от разработки, кажется, стала нормальной.

Мостик между этими двумя мирами — автотесты, они нужны и тестированию, и разработке. Фреймворк JUnit сознательно писали как можно более простым — в первую очередь для того, чтобы сделать его повседневным инструментом для разработчиков. Люди, работавшие с первыми фреймворками автотестирования, стали также авторами подходов экстремального программирования (XP) и разработки через тестирование (TDD) — т. е. подходов, настаивающих на том, что тестирование — это не «обязаловка», а интегральная часть разработки.

С учётом этого, я решил заняться «археологией» автотестирования: посмотреть на прародителя современных фреймворков xUnit, SUnit для Smalltalk. Я хотел потрогать его руками, а также понять, что двигало его автором. В результате получилось довольно интересное путешествие, которым я хотел бы с вами поделиться.

Вначале я посмотрю на то, что из себя представляло автоматизированное тестирование в 1990-е. Чтобы понять, что добавил SUnit, попробую запустить на нём несколько примитивных тестов. А потом посмотрю, что можно наскрести по сусекам интернета о мотивации создателей и пользователей. Как они пришли к тому, что барьер между разработкой и тестированием надо преодолеть? Сам я не был участником этого процесса (годами не вышел), так что придётся опираться на вторичные источники.

Читать далее
1
23 ...