QA Helper Pro: как я написал свой первый софт для помощи в тестировании
Давайте честно: каждый 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) и контакты.
Технические грабли моего первого опыта
Путь новичка не бывает гладким. Вот с чем я боролся:
Состояние (Session State): В Streamlit страница обновляется целиком при каждом клике. Чтобы введенный путь к файлу или данные в матрице не обнулялись, пришлось глубоко разобраться в
st.session_stateи динамических ключах.Нативные окна: Браузер не любит давать доступ к файловой системе. Я «подружил» веб-интерфейс с Windows Explorer через
Tkinter, чтобы кнопка «Обзор» вызывала привычное окно выбора папки.Стабильность: В первой версии кнопки «залипали», а пути сбрасывались. В стабильной версии 2.0 я внедрил систему принудительной перерисовки (
st.rerun), которая решила все вопросы синхронизации.
Итоги
Этот проект научил меня большему, чем сотни видео или статей. Теперь у меня есть:
Понимание базового вайбкодинга.
Навыки работы с графикой и файловыми потоками.
Готовый инструмент, который реально экономит мне время.
На данном этапе я активно ищу баги и дорабатываю функционал QA Helper Pro, так что буду рад обратной связи и вашим идеям. Так как это мой первый опыт в вайбкоде, прошу относиться с пониманием.