# Тестування та QA

> Вибрані роботи Engineer ApS, що демонструють Тестування та QA — досягнення, які це підтверджують.

- [Оптимізувала процеси CI/CD, заощадивши 4 000 годин завдяки впровадженню автоматизації в пайплайнах розробки програмного забезпечення.](https://platform.engineer.company/uk/portfolio/streamlined-ci-cd-processes-saving-4-000-hours-42/)
- [Згенерувала контракт API з бази даних назовні — OpenAPI, типізований TypeScript‑клієнт на 44 076 рядків, 61 mock‑обробник та обмеження, які застосовує UI, — з перевіркою на кожній ланці, що падає при розходженні.](https://platform.engineer.company/uk/portfolio/built-a-request-schema-validation-contract-with-automated-61/)
- [Побудувала пайплайни CI/CD на GitHub Actions з distroless‑образом продакшн‑фронтенду та просуванням між кількома середовищами.](https://platform.engineer.company/uk/portfolio/built-github-actions-ci-cd-pipelines-with-a-69/)
- [Написала 578 цілей автоматизації go‑task, що охоплюють нативний, Docker та HTTPS режими розробки, лінтинг, тестування, базу даних та розгортання.](https://platform.engineer.company/uk/portfolio/authored-578-go-task-automation-targets-70/)
- [Встановила стандарт якості без жодних попереджень для шести мов — Go, TypeScript, SQL, Python, Shell і Markdown — дотримання якого забезпечували pre‑commit hooks.](https://platform.engineer.company/uk/portfolio/set-a-zero-warnings-quality-bar-across-six-79/)
- [Побудувала багаторівневий набір автоматизованих тестів — 981 тест Go, 543 фронтендні та браузерні специфікації, 494 поведінкові тести SQL — з мутаційним тестуванням, property‑based тестами та обов'язковою перевіркою доступності.](https://platform.engineer.company/uk/portfolio/built-a-layered-automated-test-suite-across-four-layers-94/)
- [Побудувала механізм перевірок репозиторію — 268 зареєстрованих перевірок коміту, 277 правил лінтингу та 15 власних правил ESLint — плюс 146 тестів самих перевірок, щоб стандарт тримала збірка, а не код‑рев'ю.](https://platform.engineer.company/uk/portfolio/built-the-repository-s-guard-engine-of-268-checks-95/)
- [Тримала схему узгодженою впродовж 1 022 міграцій за допомогою перевірки CI, яка збирає базу даних обома шляхами — чиста інсталяція та інсталяція плюс усі міграції — і падає, коли вони розходяться.](https://platform.engineer.company/uk/portfolio/kept-the-schema-honest-across-1022-migrations-99/)
- [Загартувала SSH до 24 стверджених директив із тристадійною перевіркою — файл‑кандидат, зібрана конфігурація, а тоді власне зчитування демона — після того, як зчитування спіймало робочий сервер на мовчазному перевизначенні двох із двадцяти чотирьох.](https://platform.engineer.company/uk/portfolio/hardened-ssh-with-three-stage-validation-111/)
- [Довела весь шлях блокування вторгнень на кожному запуску загартування, блокуючи зарезервовану тестову адресу, читаючи отримане правило ядра й знімаючи блокування у гарантованому блоці прибирання, щоб тюрма, яка перестала працювати, валила запуск, а не звітувала про здоров'я.](https://platform.engineer.company/uk/portfolio/proved-the-intrusion-banning-path-on-every-converge-112/)
- [Перевірила правила фаєрвола за позицією, а не за наявністю, читаючи пронумерований перелік правил і живий ланцюг фільтрації пакетів, бо правило, яке існує, — це не правило, до якого доходить хоч один пакет.](https://platform.engineer.company/uk/portfolio/verified-firewall-rules-by-position-113/)
- [Змусила check mode казати правду на всій платформі, знайшовши шість зондів, які ухвалювали рішення за значенням, якого хост ніколи не давав, бо модуль command в Ansible звітує про успіх під --check, повністю пропускаючи саму команду.](https://platform.engineer.company/uk/portfolio/made-ansible-check-mode-tell-the-truth-116/)
- [Додала передпольотний play, який виконує той самий код, що й зведення, проти локальних секретів оператора приблизно за секунду, після того як наполовину застосований продакшн‑запуск загинув на дев'ятому завданні з уже записаними на живий хост налаштуваннями swap.](https://platform.engineer.company/uk/portfolio/added-a-preflight-play-for-secrets-117/)
- [Зменшила експозицію пісочниці systemd на кожному юніті, який встановлює сама платформа, — служба сигналу живучості з 9,6 UNSAFE до 1,5, звернений до інтернету git‑форж із 8,3 EXPOSED до 1,5 — і додала перевірку парсером під час зведення, знайшовши директиву з помилкою, яку мовчки ігнорували у трьох шаблонах юнітів.](https://platform.engineer.company/uk/portfolio/cut-systemd-sandbox-exposure-across-every-unit-119/)
- [Побудувала ворота коміту з 22 однорядкових лінтерів плюс п'ятьох, що заслуговують на абзац, без рівня попереджень і без дозволених вбудованих придушень, з покриттям HTML, CSS, JavaScript, Python, YAML, Markdown, shell, посилань, орфографії, секретів і типографіки.](https://platform.engineer.company/uk/portfolio/built-a-22-linter-commit-gate-127/)
- [Скоротила керовані браузером ворота якості сайту з 1 636 секунд до 615, плануючи їхні перевірки від найдовшої через пул воркерів, обмежений чотирма смугами, вимірявши, що абеткова черга коштувала 320 секунд проти 224.](https://platform.engineer.company/uk/portfolio/cut-the-visual-quality-gate-to-ten-minutes-128/)
- [Виправила мапу сайту, де 172 з 176 URL мали одну позначку часу зміни, взявши дату з історії git після встановлення, що експорт переписує кожен файл при кожному запуску.](https://platform.engineer.company/uk/portfolio/fixed-a-sitemap-with-one-shared-timestamp-140/)
- [Підвела 10 242 рядки JavaScript воріт якості під форматувальник і лінтер, встановивши, що це найбільший обсяг коду в репозиторії й єдиний, якого ніщо не читало, виправила 13 знахідок і не придушила жодної.](https://platform.engineer.company/uk/portfolio/brought-the-quality-gate-code-under-a-linter-143/)
- [Втримала генератор на 981 тестовому випадку із порогом покриття гілок 92% і попередженнями як помилками та ствердила ідемпотентність, запустивши весь конвеєр збірки двічі з порожнього файлу й вимагаючи, щоб другий прохід нічого не змінив.](https://platform.engineer.company/uk/portfolio/held-the-generator-to-964-tests-and-a-coverage-floor-145/)
- [Обрала кожне правило, яке має лінтер Python, як помилку й опрацювала 1 815 знахідок до нуля, де кожен із небагатьох винятків несе письмову причину, а два з них підперті перевіркою, а не коментарем.](https://platform.engineer.company/uk/portfolio/enabled-every-python-linter-rule-as-an-error-147/)
- [Написала тести для самих перевірок після встановлення, що перевірка, якій дають лише чистий вхід, одного дня відзвітує чисто, бо нічого не прочитала, — підклавши помилку правопису, щоб підтвердити, що перевірка орфографії її знаходить, і взявши діапазон ідентифікаторів із бази даних, а не з числа в тесті.](https://platform.engineer.company/uk/portfolio/wrote-tests-for-the-checkers-themselves-149/)
- [Виявила, що хуки коміту та ворота якості виконують різні перевірки, поки документ обіцяв, що вони однакові, порівнявши два переліки в тесті, — п'ять, які виконувалися лише вручну, були тими, що читали прозу CV.](https://platform.engineer.company/uk/portfolio/found-the-commit-hooks-and-the-gate-disagreeing-150/)
- [Відрепетирувала CI‑хук на боці форжу й знайшла два дефекти, недосяжні читанням файлу: запасний варіант, який клав нерозв'язний аргумент на вхід хука, і власну змінну середовища git, яка йшла за воротами у checkout і робила 19 тестів червоними.](https://platform.engineer.company/uk/portfolio/rehearsed-the-forge-side-ci-hook-151/)
- [Спинила застосунок, що наповнював пам'ять зі швидкістю 41 МБ за секунду — зафіксовані 111 ГБ стиснених сторінок на машині з 36 ГБ, — обмеживши кожен потік подій, підписуючись за типом події та поклавши бюджет швидкості на журналювання, що звело 610 996 рядків журналу до 1 411.](https://platform.engineer.company/uk/portfolio/stopped-an-application-filling-memory-at-41mb-a-second-155/)
- [Написала парсер, який читає справжній C‑заголовок на 7 308 рядків і перевіряє кожне місце виклику, кожну константу переліку й те, що кожен клас‑власник вказівника є final, після того як рукописний заголовок‑заглушка дозволив викликам до трьох вилучених функцій скомпілюватися, злінкуватися й впасти.](https://platform.engineer.company/uk/portfolio/wrote-a-parser-that-verifies-every-ffi-call-site-157/)
- [Звела набір тестів із шести тестів понад межу в шістдесят секунд до 135 успішних за 8,9 секунди, профілюючи головний потік і прибравши два виклики, всередині яких він сидів у 3 989 із 4 017 вибірок.](https://platform.engineer.company/uk/portfolio/took-the-test-suite-under-nine-seconds-158/)
- [Дістала ту половину ядра обміну повідомленнями, якої застосунок ніколи не використовував, — передавання резервної копії, зникомі повідомлення, редагування та повторне надсилання, підтверджені запрошення, проксі та політику шифрування, — ведучи кожен тест проти справжньої бібліотеки без заглушок.](https://platform.engineer.company/uk/portfolio/reached-the-unused-half-of-the-messaging-core-161/)
- [Змусила шість збирачів звітів повідомляти ту частину свого входу, яку вони так і не прочитали — файли, що лишилися закритими, непроінстальовані проби, нерозпізнані рядки журналу, — і підігнала пороги до 116 виміряних зразків, з'ясувавши, що сліпий збір і здоровий хост дають ту саму сторінку.](https://platform.engineer.company/uk/portfolio/made-six-collectors-state-what-they-never-read-167/)

<https://platform.engineer.company/uk/categories/testing/>
