Розробка системи автоматичного тестування для 1С-Бітрікс

Ми пропонуємо послуги з автоматичного тестування 1С-Бітрікс, включаючи регресійне тестування Bitrix, тестування інтеграції з 1С, та використовуємо такі інструменти, як PHPUnit Бітрікс, Codeception Bitrix, Playwright Bitrix для юніт-тестів Bitrix, функціональних тестів Bitrix та e2e тестів Bitrix. На
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка системи автоматичного тестування для 1С-Бітрікс
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Ми пропонуємо послуги з автоматичного тестування 1С-Бітрікс, включаючи регресійне тестування Bitrix, тестування інтеграції з 1С, та використовуємо такі інструменти, як PHPUnit Бітрікс, Codeception Bitrix, Playwright Bitrix для юніт-тестів Bitrix, функціональних тестів Bitrix та e2e тестів Bitrix. Наші рішення з CI/CD для Бітрікс забезпечують швидку автоматизацію.

Оновлення ядра Бітрікс виходять кожні два тижні. Після кожного апдейту — ручне регресійне тестування на 4–8 годин. Інтеграція з 1С через CommerceML додає ризики. Ми автоматизуємо регрес як мінімум у 24 рази швидше: тести виконуються за 10–15 хвилин замість чотирьох годин. Автоматизоване тестування виконує регрес у 24 рази швидше, ніж ручне. За понад 8 років роботи ми автоматизували регрес для більш ніж 30 проектів. Без автоматизації проект втрачає до 20% бюджету на тестуванні. Середній бюджет на автоматизацію для проекту середнього розміру — $2,000–$5,000, а економія на регресі становить до 80%.

Чому Бітрікс вимагає особливого підходу до тестування

Головна проблема — монолітна архітектура. Всі компоненти зав'язані на глобальний стан: \Bitrix\Main\Application::getInstance(), \CMain, $DB. Юніт-тести неможливо запустити без ініціалізації ядра. Потрібна спеціальна інфраструктура. Другий момент — часті оновлення. Кожен апдейт може зламати інтеграцію з 1С або кастомні рішення. Третій — складність ізоляції. Без автоматизації кожен новий реліз — стрес. Ми вирішуємо ці проблеми за допомогою перевіреного стеку інструментів.

Стек інструментів

Для Бітрікс-проектів актуальна комбінація:

  • PHPUnit — юніт-тести для ізольованої бізнес-логіки.
  • Codeception — функціональні та інтеграційні тести (має модуль для Bitrix).
  • Playwright — e2e тести браузерної поведінки.
  • PHPStan — статичний аналіз (не тест, але частина CI).

Замовте розробку системи тестування вже сьогодні — це окупиться після двох оновлень.

Як налаштувати PHPUnit для Бітрікс

Головна проблема юніт-тестування Бітрікс — код залежить від глобального стану: \Bitrix\Main\Application::getInstance(), \CMain, $DB. Запустити тест без ініціалізації ядра не можна.

Рішення — завантажувати ядро в bootstrap-файлі тестів:

// tests/bootstrap.php $_SERVER['DOCUMENT_ROOT'] = dirname(__DIR__); define('NO_KEEP_STATISTIC', true); define('NOT_CHECK_PERMISSIONS', true); define('BX_WITH_ON_AFTER_EPILOG', false); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; 

phpunit.xml:

<phpunit bootstrap="tests/bootstrap.php"> <testsuites> <testsuite name="Unit"> <directory>tests/unit</directory> </testsuite> </testsuites> </phpunit> 

Що тестувати юніт-тестами

Бізнес-логіка, ізольована в класах без прямої залежності від ядра:

class ArticleResolverTest extends TestCase { public function testResolveValidArticle(): void { $resolver = new ArticleResolver($this->createMockRepository()); $result = $resolver->resolve('ABC-123', CATALOG_IBLOCK_ID); $this->assertSame(456, $result->getSkuId()); } public function testResolveUnknownArticleReturnsNull(): void { $resolver = new ArticleResolver($this->createEmptyRepository()); $this->assertNull($resolver->resolve('UNKNOWN', CATALOG_IBLOCK_ID)); } } 

Ключовий патерн: впровадження залежностей замість прямих викликів статичних методів Бітрікс — це і робить код тестованим. Економія на регресі може досягати 80%.

Функціональні тести з Codeception

Codeception з модулем для Бітрікс дозволяє тестувати HTTP-сценарії без браузера:

// tests/functional/OrderCheckoutCest.php class OrderCheckoutCest { public function addToCartAndCheckout(FunctionalTester $I): void { $I->amOnPage('/catalog/product-slug/'); $I->click('Додати в кошик'); $I->seeInDatabase('b_sale_basket', ['PRODUCT_ID' => 123]); $I->amOnPage('/order/'); $I->fillField('NAME', 'Тест Тестов'); $I->fillField('EMAIL', '[email protected]'); $I->click('Оформити замовлення'); $I->seeInDatabase('b_sale_order', ['STATUS_ID' => 'N']); } } 

E2E тести з Playwright

Для критичних користувацьких шляхів — e2e тести, які запускають справжній браузер:

// tests/e2e/checkout.spec.js test('full checkout flow', async ({ page }) => { await page.goto('/catalog/product-slug/'); await page.click('.add-to-cart-btn'); await expect(page.locator('.cart-count')).toHaveText('1'); await page.goto('/order/'); await page.fill('[name="NAME"]', 'Test User'); await page.fill('[name="EMAIL"]', '[email protected]'); await page.click('.submit-order-btn'); await expect(page).toHaveURL(/\/order\/success\//); }); 

Як інтегрувати тести в CI/CD?

Тести запускаються автоматично при пуші в репозиторій. Ми використовуємо GitHub Actions або GitLab CI. Налаштування займає 2–4 години. В результаті кожен коміт проходить перевірку: юніт-тести за 30 секунд, функціональні — за 3 хвилини, e2e — за 5–10 хвилин. При виявленні помилок збірка зупиняється, і розробник отримує сповіщення.

Згідно з документацією 1С-Бітрікс, тестове середовище має бути ізольоване від бойового. Тому всі тести виконуються на копії бази даних з тестовими даними.

Для детального ознайомлення з налаштуваннями конвеєра CI/CD використовуйте офіційну документацію GitHub Actions або GitLab CI.

Порівняння ручного та автоматичного тестування

Критерій Ручне тестування Автоматичне тестування
Час регресу 4–8 годин 10–15 хвилин
Періодичність Після кожного релізу При кожному коміті
Ймовірність помилки Висока (людський фактор) Низька (відтворюваність)
Вартість одного циклу Висока (трудозатрати) Низька (серверний час)
Підтримка оновлень Потрібна ручна перевірка Автоматичний запуск, правка 1–3 тестів

Автоматизація окупається за 2–3 місяці.

Типові етапи розробки системи тестування

Покроковий план:

  1. Аудит коду та архітектури.
  2. Налаштування інфраструктури та bootstrap.
  3. Рефакторинг для впровадження залежностей.
  4. Написання юніт-тестів для бізнес-логіки.
  5. Функціональні тести (Codeception).
  6. E2E-тести (Playwright).
  7. Інтеграція в CI/CD.
Етап Тривалість Результат
Аудит коду та архітектури 1–2 дні Список модулів для покриття
Налаштування bootstrap та інфраструктури 1–2 дні Робоче тестове середовище
Рефакторинг для впровадження залежностей 3–5 днів Тестований код
Юніт-тести для бізнес-логіки 5–10 днів Набір стабільних юніт-тестів
Функціональні тести (Codeception) 3–5 днів Перевірка HTTP-сценаріїв
E2E-тести (Playwright) 3–5 днів Покриття критичних шляхів
Інтеграція в CI/CD 1–2 дні Автоматичний запуск при пуші
Документація та навчання 1–2 дні Готовність команди до підтримки

Скільки коштує автоматизація тестування Бітрікс?

Вартість автоматизації залежить від обсягу проекту. Середній бюджет для проекту середнього розміру — $2,000–$5,000, а економія на регресі становить до 80%. Інвестиції окупаються за 2–3 місяці.

Що входить у розробку системи тестування

  • Аудит поточного коду та виділення тестованих модулів.
  • Налаштування bootstrap-середовища PHPUnit для завантаження Бітрікс у тестовому режимі.
  • Рефакторинг коду для впровадження залежностей та тестованості.
  • Написання юніт-тестів для ключової бізнес-логіки.
  • Налаштування Codeception для функціональних тестів HTTP-сценаріїв.
  • E2E тести на Playwright для критичних користувацьких шляхів.
  • Інтеграція в CI/CD (GitHub Actions, GitLab CI).
  • Документація та навчання команди.

Ми гарантуємо стабільність тестів при оновленнях ядра. Сертифіковані спеціалісти з досвідом 5+ років та більш ніж 30 проектів з автоматизації Бітрікс.

Готові автоматизувати тестування вашого Бітрікс-проекту? Зв'яжіться з нами — оцінимо проект безкоштовно та запропонуємо рішення під ключ. Отримайте консультацію прямо зараз.