Тестирование это просто. Или история одного велосипеда

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Однажды мне нужно было протестировать ответ сервера и я решил что использовать для этого тяжеловесные швейцарские ножи вроде PhpUnit — обременительно. Осложнялось все тем — что инфраструктура была разбита на множество веб-микросервисов, которые в свою очередь работали на разных бэкендах(PHP, NodeJS, Python, GO). Посему я решил набросать простой класс, который на удивление оказался очень удобным инструментом для приемочного тестирования системы.
— Нам нужно быть уверенными что при каждом пуше у нас не сломается вся инфраструктура, сможешь сделать? -Легко!

Знакомьтесь eXo-Test. Небольшой php-cli класс с которым проводить тесты — это действительно просто.

image

Установка
можно просто почитать на GitHub
или тут

composer require overvoidjs/exotest:dev-master

<?php 
include_once 'vendor/autoload.php';


Предположим Вам нужно проверить доступность страниц и валидность контента на нем, например удостовериться что в каталоге есть товары. Нет ничего проще:


<?php 
include_once 'vendor/autoload.php';

$i = new Exo;

$url = 'http://localhost:7888/catalog/instrumentyi/';

$i->is_ok($url, '<div class="product-card-name">');

Теперь просто запустите созданный Вами скрипт из консоли:

php test.php

Вам прилетит отбивка:

1) Успех:

image

2) Статус ответа 200(Ок), но контент не найден

image

3) Статус ответа не 200

image

Статусы ответа это хорошо, но теперь перед нами встает задача проверить функциональность системы. Опять же — просто добавьте воды!

Тут мы проверяем добавление товара в корзину:


$payload = [
  'product_id'=>'3401',
  'count'=>'1'
];

@$cart_id = $i->post_it('http://localhost:7888/api/cart/add',$payload);

if(is_int($cart_id)){
    echo "API Добавления в корзину ...  Ok \n";
} else {
   echo "API Добавления в корзину ...  FAIL \n";
}

Подсветка ответов
Зеленым:


echo "API Добавления в корзину ... \033[32m Ok\033[0m \n";

Красным:

echo "API Добавления в корзину ... \033[01;31m FAIL\033[0m \n";


Отлично, функционал почти проверили. Почти? Ну почти у любой системы будет API которое работает с файлами загруженными клиентом. Это мы тоже можем протестировать:


//Тут необходим CURL - но думаю он у всех есть
$i = new Exo;

$url = 'https://site.com/api/sameimg';

$payload = [
  'data'=>'data'
];

$post_file_name = 'new_img';
$post_file_path = './new_img.jpg';

$test = $i->post_it_file($url,$payload,$post_file_name,$post_file_path);

Тут по заданному адресу будет отправлена POST запросом полезная нагрузка + файл так же как если бы он был добавлен в
 input type="file" name="new_img" 


Пока что это все. Надеюсь этот инструмент будет полезен в первую очередь тем — кто до сих пор не тестирует свой код.
Источник: https://habr.com/ru/post/515996/


Интересные статьи

Интересные статьи

Привет, Хабр! Меня зовут Сэм, я разработчик в сервисе Qonversion. В этой статье описаны новые возможности для тестирования подписок, представленные Apple во время сессии Introducing ...
Часть 1: 1976-1995 годы Часть 2: 3Dfx Voodoo Падение 3Dfx и расцвет двух гигантов На рубеже веков отрасль графики демонстрировала тенденции к дальнейшей консолидации. С профессиональн...
Если у вас есть интернет-магазин и вы принимаете платежи через Интернет, то с 01 июля 2017 года у вас есть онлайн-касса.
При использовании стандартных методов отправки данных в Google Analytics есть вероятность, что система не успеет отправить все события, если процесс был прерван перезагрузкой страницы. В начале э...
Другие статьи цикла: История реле Метод «быстрой передачи сведений», или Зарождение реле Дальнописец Гальванизм Предприниматели А вот, наконец, и реле Говорящий телеграф Просто соедин...