Давайте честно: каждый QA-инженер немного ленив в хорошем смысле слова. Нам не хочется тратить по 20 минут на рутину, которую можно автоматизировать. Мы постоянно ищем инструменты: один для генерации разных типов файлов, второй для проверки корректности JSON, третий для генерации данных.

В какой-то момент я понял, что мне нужно единое «окно», где будет всё. Так появился QA Helper Pro. Это мой первый серьезный опыт в разработке на Python. Весь проект написан на «вайбкоде», я не говорю, что это идеальный инструмент, который правильно структурирован и реализован, но он работает и реально помогает в моей работе.

Почему Streamlit?

Для первого опыта я выбрал Streamlit. Это фреймворк, который позволяет превратить Python-скрипт в полноценное веб-приложение за пару часов. Никакого JS, только логика на Python. Идеально для быстрого решения моих задач.

Описание функционала :

Общий функционал
Общий функционал

🚀 Основные инструменты

  • 📊 Матрица тестов: Инструмент для проектирования тестовых сценариев. Поддерживает методы Full Combinatorial (все возможные комбинации) и Pairwise (оптимизация проверок через попарное сочетание параметров). Данный инструмент позволит вам сделать полное тестовое покрытие, в случае кроссбраузерного тестирования и использования нескольких систем или профилей.

    Матрица тестов
    Матрица тестов
  • 📸 Сравнение скриншотов: Модуль визуального тестирования. Позволяет сравнивать фактический результат с ожидаемым с помощью скриншотов, генерируя тепловую карту различий. Функционал подходит для тестирования изменений между релизами с точки зрения верстки, так как мы все знаем, как может замылиться привычный интерфейс.

  • 📂 Файловый цех: Лаборатория для работы с файловыми структурами. Позволяет генерировать сложные деревья папок с файлами, файлы заданных объемов и форматов, а также делать огромное количество копий файлов для нагрузочных тестов.

    Генератор папок с файлами
    Генератор папок с файлами
  • 🧪 Генератор данных: Быстрое создание реалистичных тестовых данных 21 вариант (имена, почты, адреса и др.) для заполнения форм и баз данных.

    Генератор тестовых данных
    Генератор тестовых данных

🛠 Специализированные проверки

  • 💀 Негативные сценарии (beta): Проектирование тестов на отказ системы, обработку некорректного ввода, спецсимволов, битых файлов и граничных значений.

  • 🖥️ Эмулятор экранов: Проверка адаптивности интерфейса под различные разрешения мониторов и мобильных устройств. Лично я использую для проверки корректности верстки, так как тестирую преимущественно, ПО, которое может использоваться в офисах, а мониторы там, могут быть очень древними.

  • 🔗 Анализатор ссылок: Автоматический поиск «битых» URL-адресов и проверка корректности редиректов на сайте.

  • 🧠 Тест-дизайн: Вспомогательный модуль генерации граничных значений.

📦 Работа с кодом и текстом

  • 💎 JSON Lab: Инструмент для валидации, форматирования и визуализации JSON-структур при тестировании API.

  • 📝 Сравнение текста: Анализ текстовых файлов, логов или конфигураций для выявления минимальных различий в тексте.

  • 🛡️ Проверить хеш: Верификация целостности файлов путем расчета контрольных сумм по алгоритмам MD5 или SHA-256. Лично я использую для проверки корректности после загрузки и выгрузки файла в системе.

  • 👁️ Визуальная проверка: Дополнительный контроль графических элементов и интерфейса на соответствие макетам. С возможностью создания базы эталонных скриншотов (удобно тестировать визуальные изменения между релизами).

📝 Служебные разделы

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

  • ℹ️ О программе: Информация о текущей стабильной версии v2.0, используемом стеке технологий (Python, Streamlit, OpenCV) и контакты.

Технические грабли моего первого опыта

Путь новичка не бывает гладким. Вот с чем я боролся:

  1. Состояние (Session State): В Streamlit страница обновляется целиком при каждом клике. Чтобы введенный путь к файлу или данные в матрице не обнулялись, пришлось глубоко разобраться в st.session_state и динамических ключах.

  2. Нативные окна: Браузер не любит давать доступ к файловой системе. Я «подружил» веб-интерфейс с Windows Explorer через Tkinter, чтобы кнопка «Обзор» вызывала привычное окно выбора папки.

  3. Стабильность: В первой версии кнопки «залипали», а пути сбрасывались. В стабильной версии 2.0 я внедрил систему принудительной перерисовки (st.rerun), которая решила все вопросы синхронизации.


Итоги

Этот проект научил меня большему, чем сотни видео или статей. Теперь у меня есть:

  • Понимание базового вайбкодинга.

  • Навыки работы с графикой и файловыми потоками.

  • Готовый инструмент, который реально экономит мне время.

На данном этапе я активно ищу баги и дорабатываю функционал QA Helper Pro, так что буду рад обратной связи и вашим идеям. Так как это мой первый опыт в вайбкоде, прошу относиться с пониманием.

Полный код проекта я выложил на GitHub