tg-me.com/bpblog/1297
Last Update:
Тестировать софт важно! В Бетуле у меня две системы тестирования. Одна дурацкая и скучная: она написана с нативными гошными средствами тестирования. У меня их CI бегает на каждый пуш и патч.
Другая — весёлая и интересная. Она написана на POSIX Shell. Как известно¹, никакие другие шеллы использовать не стоит, поэтому я использую именно POSIX вариант. Этим скриптом я тестирую веб-морду. Такое тестирование вроде бы называется поведенческим тестированием.
Кто сразу хочет посмотреть этот волшебный скрипт, заходите на сурсхат.
Наверху файла всякая берёзовая оркестрация: вырубаю другую Бетулу, запускаю новую для теста, подчищаю грязь. Потом я определяю процедуры, нужные для тестов. С 75-ой строчки уже идут тесты! Показываю фрагмент кода:
Test 'First screen'
ExpectStatus 200
Get '/'
Check
Test 'Register on first screen'
ExpectStatus 303
Post '/register' -F name=bo -F pass=un
Check
Test 'Access non-existent post'
ExpectStatus 404
Get '/1'
Check
Test 'Create a post'
ExpectStatus 303
Post '/save-link' -F url=https://bouncepaw.com -F title=Bouncepaw
Check
Test 'Save link: non-URL text to URL'
ExpectStatus 400
ExpectContent 'Invalid link'
Post '/save-link' -F url=Bouncepaw -F title=
Check
И ещё десяток таких. Получился красивый DSL для тестирования! Хорошо подходит для проверки status quo и огранки новых фичей. Сегодня наверное вот так ограню фичу, которую вчера написал (поиск). Правда мне придётся опять расширить число вспомогательных процедур. Как будто уже пора переписать на Рубине весь этот скрипт. Наверное, так и будет когда-нибудь.
1: https://j3s.sh/thought/write-posix-shell.html
BY Уютная тумбочка
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 280
Share with your friend now:
tg-me.com/bpblog/1297