Курс по уеб програмиране (2015), занятие №1 - HTMLDAVID Academy
Kурс по уеб програмиране (2015)
Занятие №1: HTML
--
Въведение в HTML
Елементи и тагове
Мета съдържание
Структуриране на текст
Хипервръзки
Изображения
Таблици
Списъци
Форматиране на таблици
Форми
Въведение в HTML 5
Структуриране на страница
Форми и валидиране
Аудио и видео
Курс по уеб програмиране (2015), занятие №1 - HTMLDAVID Academy
Kурс по уеб програмиране (2015)
Занятие №1: HTML
--
Въведение в HTML
Елементи и тагове
Мета съдържание
Структуриране на текст
Хипервръзки
Изображения
Таблици
Списъци
Форматиране на таблици
Форми
Въведение в HTML 5
Структуриране на страница
Форми и валидиране
Аудио и видео
Безмилостно тестване на уеб приложения със Seleniumsvilen.ivanov
Аудиторията ще бъде запозната с проекта OpenQA (http://www.openqa.org/), обединяващ инструменти с отворен код за подпомагане и/или автоматизиране тестването на приложения. Ще бъде обърнато специално внимание на Selenium – изключително полезен инструмент за създаване на функционални тестове за уеб и AJAX приложения, както и изпълнението им без намесата на човек върху множество браузъри (Firefox, Internet Explorer) и платформи (Linux, Windows). Ще бъдат показани примерни тестове, начини за създаването им (ръчно или чрез приставка към Firefox), както и възможности за разширяване на Selenium за специфични задачи.
Освен практическата страна - запознаване със Selenium - лекцията насърчава разработчиците да създават софтуер изчистен от грешки като представя достъпни и качествени инструменти за автоматизиране на рутинни (и най-вече скучни) задачи при тестването софтуера. Selenium може да се използва като алтернатива на „затворени“ продукти за функционално тестване в съвременните, гъвкави и тестово-ориентирани методологии за разработка на софтуер (Agile Development, Test-Driven Development, Extreme Programming).
AJAX и създаване на богати потребителски интерфейси в браузърsvilen.ivanov
Лекцията цели да представи личния опит на автора в разработката на богати потребителски интерфейси базирани на AJAX. Ще бъдат демонстрирани различни шаблони, използвани при изграждането на JavaScript класова йерархия за моделиране на входни контроли, позволяващи сложни взаимодействия и валидация на входа при голяма степен на независимост от представянето. Авторът ще дискутира различни ограничения в съвременните браузъри и начините те да бъдат
заобиколени ефективно. Представена на WebTech 2006
Безмилостно тестване на уеб приложения със Seleniumsvilen.ivanov
Аудиторията ще бъде запозната с проекта OpenQA (http://www.openqa.org/), обединяващ инструменти с отворен код за подпомагане и/или автоматизиране тестването на приложения. Ще бъде обърнато специално внимание на Selenium – изключително полезен инструмент за създаване на функционални тестове за уеб и AJAX приложения, както и изпълнението им без намесата на човек върху множество браузъри (Firefox, Internet Explorer) и платформи (Linux, Windows). Ще бъдат показани примерни тестове, начини за създаването им (ръчно или чрез приставка към Firefox), както и възможности за разширяване на Selenium за специфични задачи.
Освен практическата страна - запознаване със Selenium - лекцията насърчава разработчиците да създават софтуер изчистен от грешки като представя достъпни и качествени инструменти за автоматизиране на рутинни (и най-вече скучни) задачи при тестването софтуера. Selenium може да се използва като алтернатива на „затворени“ продукти за функционално тестване в съвременните, гъвкави и тестово-ориентирани методологии за разработка на софтуер (Agile Development, Test-Driven Development, Extreme Programming).
AJAX и създаване на богати потребителски интерфейси в браузърsvilen.ivanov
Лекцията цели да представи личния опит на автора в разработката на богати потребителски интерфейси базирани на AJAX. Ще бъдат демонстрирани различни шаблони, използвани при изграждането на JavaScript класова йерархия за моделиране на входни контроли, позволяващи сложни взаимодействия и валидация на входа при голяма степен на независимост от представянето. Авторът ще дискутира различни ограничения в съвременните браузъри и начините те да бъдат
заобиколени ефективно. Представена на WebTech 2006
[Dev.bg] How to automate the integration of test resultsBorislav Traykov
Thoughts on what test results are, how and in which systems they are integrated and how automating that integration is very beneficial. The slide deck is mostly in Bulgarian.
DevOps: what kind of position is it and what people you can meet at itBorislav Traykov
Personal comments on three separate surveys about DevsOps, common concepts associated with the position and finally - people with different IT background that become DevOps - their unique contributions, strengths and weaknesses
My thoughts and experience related to the term "TestOps", coined by Seth Eliot. How various roles in the software delivery lifecycle can collaborate and how different testing signals can be found at different stages of that lifecycle - especially when the product/service is already running in Production
[Dev.BG] Options for automated tests on windows desktop applicationsBorislav Traykov
My presentation on the possibilities for creating automated tests on Windows desktop applicaitons - specifically if you can only interact with the UI. The slide deck is entirely in Bulgarian.
Gamification: Work hours? Time to play the game!!Borislav Traykov
Gamification offers ways to have the thrill of playing a game while you work. In this talk I will share with you ways to gamify your work day: achievements, badges and much more!
7. GUI – има какво да се желае
• Визуални бъгове
• На моменти е прекалено опростен
• Малка зона за писане на скриптове – 20-30 реда
• Chrome app вариацията има някои ограничения, като
например липсващи Chrome Dev tools и Postman console
• Chrome app вариацията – най-популярната до момента -
може и да спре да съществува -
http://blog.getpostman.com/2016/08/23/using-the-postman-chro
8. HTTP заявки
Лесно се описват –
URL, headers и body.
Лесно е да имат добро
текстово описание
(description).
10. HTTP заявки
Параметризация – 3 възможности за дефиниране на променливи, които да се
използват в URL-ите, както и request body-тата, така и в тестовете. Тези параметри
могат да бъдат:
• Специфични за средата – може да се посочи „среда“, т.е. набор от
променливи и техните стойности, срещу които да се правят HTTP заявките
• Глобални – глобални за Postman на текущия потребител
• Динамични – дефинирани чрез скрипт: postman.setEnvironmentVariable(key,
value) или postman.setGlobalVariable(key, value)
11. HTTP заявки
• Автоматично добавени header-и – Postman, както и много
други HTTP клиенти добавят request header-и, обаче това
не е ясно директно докато си пишем HTTP заявките
• Някои header-и „не могат да се променят“
12. Chrome vs Windows app
HTTP заявки
В примера на следващия слайд ще видите различните „служебни“ header-и, които Postman добавя и на които автоматично
дава стойности.
Направена е POST заявка, която не се приема от крайния service. Причината се оказа, че крайния service (black box продукт,
който не може да бъде променян), приема HTTP имената на request header-ите като взема в предвид малки и главни букви
– case sensitivity.
Поради този факт HTTP заявката, изпратена от Windows-ския Postman не се възприема от service-a – нейният header
“Content-Length” е изписан с малки букви. Този header описва дължината на body-то на POST и PUT заявки.
Тогава service-а не възприема, че този header е подаден и от там – че няма и body с валидна дължина.
Проблемът обаче не се проявява при Chrome app вариацията на Postman.
Както можете да видите обаче, и в двете вариации на Postman някои header-и се предават, изписани само с малки букви.
Това може да се реши ако ние сами посочим тези header-и при изпращане на заявката.
Единственият проблем е “Content-Length”, тъй като за него се оказва, че не можем да назначим динамична стойност – само
статично число.
14. Параметризация
• Environments (среди) – дефинираш едни и същи
променливи; слагаш различни стойности в
зависимост от средата. Могат да се запазват като
файл в JSON формат.
• Глобални променливи – не се променят от среда на
среда; например някакви общоизвестни съобщения
или кодировки
15. • Environments (среди) – още един (JSON) файл, който
трябва да се поддържа и синхронизира между
колегите
• Глобални променливи – глобални, но за машината на
всеки един колега; може да доведат до „ама при мен
работи“ ситуации
Параметризация
16. Collections
• Групиране на HTTP заявките – също така могат да се
дават описания и организацията да стане още по-
разбираема и лесна за използване от един или
повече екипи
• Поддържа се импорт/експорт – има и съвместимост с
групите HTTP заявки в други системи - например
Swagger
17. • В Postman не е ясно кой е JSON файлът на хард
диска, в който се пази текущата колекция
• Можете да се натъкнете на грешка, че не може да се
импортне колекция, която сте експортнали без
проблем.
Проблемът се проявява рядко и то когато сте
експортнали колекцията във формат „версия 2“.
Решението е да експортнете наново, но във формат
„версия 1“
Collections
18. Newman
• NodeJS приложение – може да се използва на
различни операционни системи
• Има добре документирани възможности
• Може да ползва като NodeJS модул в по-голямо
NodeJS приложение
• Новите му версии са синхронизирани с тези на
Postman -
https://www.getpostman.com/apps#changelog
19. • Трябва да се обновява отделно от Postman
• NodeJS приложение – при възникнал проблем може да получите изключително неописателни грешки
• API-то на Newman в момента е версия №3; v2 все още се поддържа. Поради тази причина може да настъпи объркване от
използване на опции валидни за различните версии на API-то. Решение на проблема има – в миграционния наръчник може
да се види кои опции са валидни за v3 – така можем да се придържаме само към тях.
• Макар да се влагат усилия да се уеднаквят, Postman и Newman все още имат някои функционални разлики
• По подразбиране ако има дори един неуспешен тест, Newman излиза с exit код = 1. Под Windows това обаче всичко освен
нула се счита за код за неуспешно изпълнение.
В такъв случай системи като Jenkins, към които сте интегрирали Newman могат и да не отчетат изпълнението на вашите
тестове, макар че просто е имало гърмежи (test failures).
В крайна сметка човек може да се справи с тази особеност или с малко Windows cmd магия, или ако прочете за –-exitCode
параметъра на Newman: https://www.getpostman.com/docs/integrating_with_jenkins
• А вие пробвали ли сте да подкарвате NodeJS приложения на сървър, който няма достъп до Интернет? Възможно е, но е и
„много забавно“.
Newman
20. Писане на тестове
• Postman Runner
Графична среда за изпълнение
на тестовете върху цели
колекции. Предоставя и
възможност за data-driven
изпълнения на колекциите
21. Писане на тестове
• Lodash
• SugarJS
• tv4 JSON schema validator
• CryptoJS
• xml2Json(someStringVar)
• еval(<код на JS библиотека по наш избор>)
Налични библиотеки:
22. • Писането на преизползваем код е … примитивно:
Както е демонстрирано на следващия слайд, може да
се запамети целият код на тестовете в променлива и
след това тя да се eval-не, така че кодът в нея –
запазен като string – да се изпълни като стандартен
JavaScript код.
Писане на тестове
23. Писане на тестове
Пример за глобална променлива, в която съхраняваме код за
тестове, които искаме да изпълняваме.
По този начин преизползваемият код ще се запази в environment
JSON файла.
Проблемът е, че ако този код трябва да се промени или дебъгне,
трябва да се извади от промеливата, да се промени и после пак
да се върне като стойност на тази променлива.
24. • По подразбиране всяка една проверка се счита за
тест, следователно 2 HTTP заявки, всяка с по 8 теста
в крайна сметка дава 16 теста. Това може да не е
търсеното от нас представяне на тестовете при
обобщаване на резултатите.
• Пак по подразбиране, всеки един тест в Postman е
прост булев израз – не се предоставя информация за
реалните и очакваните стойности … освен ако не си
ги принтираме сами, както е показано в следващия
слайд
Писане на тестове
26. Документация
• Има страшно много на официалния сайт (+ блога),
както и в GitHub хранилищата с кода на Postman и
Newman, така и в YouTube (+ oфициален канал)
• Общи усилия – Postman промотират хората, които
допринасят за развитието и разпознаваемостта на
продукта – чрез направата на обучителни материали,
доработки или интеграции с други продукти
27. • Базирана на стари версии – Postman и Newman са
преживяли не едно цялостно пренаписване, така че
• Най-новите неща все още не са описани –
обикновено ги има представени отгоре-отгоре в блог
пост или в някоя дискусия в GitHub или
StackOverflow
• Лиспва autocomple в самия Postman – при все, че
има вградени библиотеки.
Вече има подобрения в тази насока.
Документация
28. Благодаря!
Borislav Traykov
DevOps & TA Lead
Verint
https://www.linkedin.com/in/borislavtraykov/
https://www.facebook.com/borislav.t.traykov
https://twitter.com/turbobobi
www.qachallengeaccepted.com
Editor's Notes
Благини = аутентикация, cookies, генериране на код
Благини = аутентикация, cookies, генериране на код
Благини = аутентикация, cookies, генериране на код