Автотест как программа: данные, действие, оракул · QA Orbit
Перейти к содержимому
QA ORBIT
Новости Инструменты Библиотека Полезные сайты Курсы ИИ и тестирование
Войти
КурсыТренажёры3
Маршруты обучения
КурсыАвтоматизация тестирования: код, изоляция и CIУрок 1
Программа курса

Автоматизация тестирования: код, изоляция и CI

0 из 6 уроков пройдено
01Автотест как программа: данные, действие, оракул≈ 50 мин02Уровни проверки и контракт состояния≈ 50 мин03UI: локаторы, ожидания и наблюдаемый результат≈ 50 мин04Изоляция, fixtures и асинхронность≈ 50 мин05Диагностика падений и запуск в CI≈ 50 мин06Итоговый проект: надёжный набор публикации≈ 70 мин
Учебные данные. Реальные навыки.
Урок 01 / 6 · 01 · Основы кода≈ 50 мин с практикой

Автотест как программа: данные, действие, оракул

Пишем первый проверяемый тест, читаем JavaScript и различаем успешный запуск и полезную проверку.

В своём темпе
Что вы сможете после урока
  • Читать import, функцию, объект и assertion в коротком тесте.
  • Строить проверку из независимых входов и ожиданий.
  • Использовать граничные значения без копирования логики реализации.

Что делает тест полезным

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

В этом курсе используется AUTO-CORE-1 — отдельная модель вымышленного OrbitDesk в памяти. Её status/body похожи на HTTP-ответ, но это обычные объекты JavaScript, без сети, cookie и СУБД. Так начинающий инженер может выполнить практику без удалённого стенда и платной подписки. Контракт намеренно небольшой: его ожидания можно разобрать вручную. Он независим от API- и SQL-кейсов других курсов; одинаковое имя продукта не означает общий снимок данных.

Первый тест границы

javascriptУчебный пример
import test from 'node:test';
import assert from 'node:assert/strict';
import { validateTitle } from './orbitdesk.mjs';

test('80 code points are allowed', () => {
  const title = 'A'.repeat(80);
  const actual = validateTitle(title);
  assert.equal(actual, true);
});

Достаточно короткого JavaScript

import подключает встроенный runner, строгие сравнения и тестируемую функцию. const сохраняет ссылку на значение, а объект {title:'Ready'} группирует именованные поля. Функция в test выполняется runner, поэтому assertion должен находиться внутри неё или возвращённой асинхронной работы. Метод repeat создаёт нужный размер входа; строка названия теста описывает правило и помогает найти отказ. Объекты сравнивают через deepEqual из node:assert/strict, чтобы проверить структуру, а не только существование ответа.

Наш договор измеряет длину в Unicode code points. JavaScript string.length считает UTF-16 code units: для одного emoji это может быть два. Итерация [...value] в данном договоре считает code points, но не пользовательские графемы: символ с комбинируемым знаком может занимать несколько позиций. Поэтому тест на восемьдесят ASCII-букв не заменяет тест на восемьдесят emoji. Перед проверкой границы всегда назовите единицу измерения; слово «символ» без уточнения может скрывать разные требования.

Из набора примеров в проверку правила

Для title нужны пустая строка, один элемент, восемьдесят и восемьдесят один, нестроковое значение и Unicode-контрпример. Пробельная строка сохраняется как допустимый draft, а возможность публикации проверяется позже по отдельному правилу. Не переносите trim в validateTitle только ради зелёного финального шага: тогда потеряется исходный текст и смешаются два разных оракула.

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

Для первого запуска скачайте orbitdesk.mjs, orbitdesk.buggy.mjs, contract.test.mjs и diagnostics.test.mjs в одну папку. Нужен поддерживаемый Node.js 24 или 26, npm-пакеты для основного набора не нужны. Команда node --test contract.test.mjs diagnostics.test.mjs запускает только нужные файлы. Зафиксируйте версию Node и код завершения; вывод из учебного разбора не заменяет собственный запуск.

Источники и проверка фактов

Node.js · Test runnerРегистрация и запуск тестов.Node.js · AssertСтрогие сравнения значений и объектов.MDN · String iteratorИтерация строк по code points, отличие от графем.

Авторский учебный материал · Редакция QA Orbit · версия 2026-10-28.1

Теперь применим это к задачеПопробуйте сами, прежде чем открывать разбор.
ВернутьсяПрограмма курсаСледующий урокУровни проверки и контракт состояния
QA ORBIT

Проверяй. Понимай. Расти.

Пространство осмысленного тестирования.
ИсследуйтеНовостиИнструментыБиблиотека
РазвивайтесьКурсыТренажёрыМаршруты обученияИИ и тестирование
Оставайтесь на орбитеО проекте Полезные сайтыГлоссарий
© 2026 QA Orbit. Сделано с вниманием к деталям.
КонфиденциальностьУсловия использования Всегда есть что исследовать