Результаты поиска
ITVDN: курсы программирования
Видеокурсы по
программированию

Заказать звонок

Выбери свою IT специальность

Подписка

Заказать звонок

+38 099 757 27 82
Результаты поиска по запросу: курс - практикум по frontend разработке*
Unit тестирование в C#

Автор: Дмитрий Охрименко

Для написания хорошего Unit-теста необходимо не только знать, как пользоваться тем или иным Unit Test Framework, но и понимать основы проектирования - это позволит создавать код, который будет поддерживать тестирование. Данный видео курс предназначен для разработчиков, желающих систематизировать знания в области написания Unit-тестов. В материалах курса вы найдете примеры создания простых тестов и примеры применения продвинутых возможностей библиотеки MSTest. Если вы собираетесь освоить TDD (Test-driven Development) и начать создавать более качественный код – этот курс для вас.
Введение в JQuery

Автор: Сергей Швайцер

Данный видео курс предусматривает изучение jQuery с самых азов. Под руководством опытного тренера вы узнаете, каким образом данная технология облегчает жизнь программисту, а также научитесь эффективно применять ее в разработке веб-приложений. Примеры курса составлены в простой форме и будут понятны как опытным, так и начинающим разработчикам.  Данный видео курс охватывает следующие темы:  Селекторы и селекторная выборка элементов. Фильтры контента, атрибутов, элементов форм. Манипуляция свойствами, атрибутами и стилями. Работа с DOM-деревом.
Visual Studio 2019 Tips & Tricks

Автор: Евгений Лукашук

Курс Visual Studio 2019 Tips & Tricks посвящен особенностям установки, настройки, кастомизации и работе с данной средой разработки. Курс раскрывает некоторые, не всегда очевидные, моменты отладки, написания кода и командной работы в рамках данной IDE. В первую очередь данный курс будет полезен для новичков, только начавших работать с Visual Studio, однако некоторые моменты быть полезными так же и для более опытных пользователей.
How to Java Стартовый

Автор: Евгений Тихонов

«How to… Java Starter» будет полезен тем, кто прошел курс «Java Starter» и хочет повторить и/или надежно закрепить уже имеющиеся базовые знания. Он содержит более 50 видео уроков, в которых автор за короткий промежуток времени “пробегает” по всем темам из стартового курса. Каждый урок сопровождается наглядными практическими примерами. Пройдя видео курс, вы также усовершенствуете свое понимание циклов, массивов, методов и логических функций.
Создание пользовательских элементов управления в Android

Автор: Денис Калашник

Курс «Создание пользовательских элементов в Android» является продолжением серии уроков для начинающих Android разработчиков по созданию мобильных приложений с использованием Java и Kotlin. В данном курсе мы рассмотрим процесс создания пользовательских компонентов интерфейса с помощью различных специализированных библиотек. Навыки, полученные при прохождении этого курса, помогут понимать то, как правильно организовывать использование пользователем графического интерфейса приложения и внутренней логики самого приложения.
How to C# Стартовый

Автор: Богдан Бондарук

Видео курсы “How to ...” призваны помочь начинающим специалистам в освоении различных языков программирования. “How to C# Starter” является дополнением курса “C# Стартовый” и затрагивает некоторые нюансы, понимание которых обязательно для успешного продвижения в изучении языка C#. Данный видео курс поможет разобраться с проблемными темами, которые вызывают у многих трудности в начале обучения.
Создание трёхмерной графики в Cinema 4D

Автор: Станислав Новохатько

В данном курсе будет рассмотрено создание трехмерной графики в Cinema 4D, моделирование, создание материалов и текстур. Автор раскроет перед учащимися основы анимации и генеративной графики, расскажет о настройке света и рендеринге. Шаг за шагом будет разобрана работа с основными инструментами, чтобы в конце курса вы без проблем смогли создать ваши первые работы. Данный курс состоит из 7 занятий и одного мастер-класса, на котором автор создаст персонажа из игры Angry Birds.
Интро

Автор: Станислав Новохатько

В этом курсе мы рассмотрим создание трехмерной графики в Cinema 4D, моделирование, создание материалов и текстур, основы анимации и генеративной графики, настройка света и рендеринг. Шаг за шагом мы рассмотрим работу с основными инструментами для того чтобы в конце курса вы без проблем смогли создать ваши первые работы. Курс Разработка трехмерной графики в Cinema 4D состоит из 7 занятий, и одного мастер класса, в котором мы создадим персонажа из Angry Birds.
Собеседование с QA. 250+ вопросов для Junior, Middle, Senior

Автор: Влад Сверчков

Junior 1.1 Теория тестирования. 1.2 AQA      1.2.1 Программирование и Selenium      1.2.2 TestNG/JUnit, Git, CI              1.3 Web              1.4 Mobile              1.5 Практические задания   Middle 2.1 Теория 2.2 AQA      2.2.1 Selenium      2.2.2 Тестовая инфраструктура 2.3 Web 2.4 Mobile 2.5 Практические задания   Senior 3.1 Теория 3.2 Практические задания     Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 12 января 2022 года. Оригинальная версия на украинском языке доступна по ссылке. Эту подборку вопросов, которые ставят кандидатам разных уровней на технических собеседованиях на позицию QA, составили совместными усилиями практики. Список – лишь ориентир. Кандидатам советуем пробежаться по вопросам и отметить неизвестные слова, погуглить и заодно повысить шансы пройти собеседование. Интервьюерам – пополнить свой запас интересных вопросов. Но не переборщите :) Если вы не претендуете на позицию QA, просмотрите переводы подборок вопросов по другим популярным IT-специальностям.   Junior   Теория тестирования 1. Что такое тестирование? 2. Зачем тестировать ПО? 3. Какие существуют этапы тестирования? 4. Какие типы тестирования можете назвать? 5. Какие уровни тестирования знаете? 6. Какие техники тест-дизайна знаете? 7. Что такое техника анализа классов эквивалентности? 8. Что такое техника анализа предельных значений? В чем ценность этой техники? 9. Что такое Regression и Confirmation тестирование, какая между ними разница? 10. Как часто следует проводить регрессионное тестирование продукта? 11. Какие бывают виды интеграционного тестирования? 12. Что такое Configuration Testing? 13. Что такое Exploratory Testing? 14. Какие существуют UI-стандарты? 15. Что такое Black/Grey/White Box Testing? 16. Что такое Performance Testing? 17. Что такое Smoke и Sanity тестирование и какая между ними разница? 18. Что такое Traceability Matrix? 19. Что такое Sanity Testing? 20. Что такое End-to-End тест? 21. Что такое тестирование безопасности? 22. Что такое испытание на основе рисков? 23. Что такое динамическое тестирование? 24. Что такое «парадокс пестицида»? 25. Опишите основные фазы STLC? Дайте определение Entry и Exit Criteria. 26. Что такое Bug, Error, Failure, Fault? 27. Какие есть атрибуты баг-репорта? Какие основные поля для заполнения? 28. Какова разница между приоритетом и серьезностью? 29. Приведите примеры серьезного, но не приоритетного бага. 30. В чем разница между валидацией и верификацией? 31. Зачем нужна тестовая документация? Какие её виды? 32. Что такое тест-план? Какие элементы у него есть? 33. Какую обязательную информацию должен содержать тест-план? Как правильно его использовать, поддерживать и нужен ли он вообще для большинства проектов? 34. Какая разница между чеклистом и тест-кейсами? 35. Приведите пример хорошего тест-кейса.   Ответы на некоторые из этих вопросов вы можете найти в видео курсе QA Стартовый (урок 1, урок 3, урок 4, урок 5), Основы тестирования (урок 6), Основы тестирования ПО (урок 1-5), а также в вебинаре “QA практикум. Техники тест дизайна” (часть 1 и часть 2).   AQA (Automation QA)   Программирование 36. Что такое ООП? Назовите его принципы с примерами? 37. Что такое интерфейс? Что такое абстрактный класс? Чем они отличаются? 38. Что такое SOLID? Приведите примеры. 39. Что такое DRY, KISS, YAGNI? 40. Какие паттерны GOF вам известны? Приведите примеры их использования. 41. Что такое PageObject и PageFactory? 42. Какая иерархия Collections? 43. Какая разница между Thread class и Runnable interface? 44. Какая разница между String, Stringbuffer и Stringbuilder? 45. Разница между final, finally и finalize?   Selenium 46. ​​Что такое Selenium и зачем его используют? 47. Что такое драйвер браузера? 48. Какие виды локаторов страницы существуют? Каковы их преимущества и недостатки? 49. Что такое Selenium Waits? Какие есть и чем отличаются? 50. Какие exceptions может бросить Selenium? Что они означают и как их обрабатывать? 51. Для чего используют JavaScriptExecutor? Приведите примеры. 52. Что такое Selenium Grid? 53. Какие способы click и send keys Selenium? 54. Как вы запускаете параллельное выполнение тестов? Что такое ThreadLocal? 55. Какая разница между Action и Actions? 56. Как написать метод isElementPresent? 57. Как вычитать данные из динамической веб-таблицы? 58. Можете ли вы назвать 10 интерфейсов в Selenium? 59. Назовите два способа, позволяющих автоматизировать капчу. 60. Вспомните типы навигационных команд Selenium. 61. Как найти поврежденные ссылки в Selenium WebDriver? 62. Какую технику следует рассмотреть, используя весь сценарий, если «нет ни frame id, ни frame name»?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing Automation on Java (урок 1), Автоматизация тестирования мобильных приложений (урок 5), а также в вебинаре “Selenoid или Selenium Grid — что лучше?”.   TestNG/JUnit 63. Для чего нужны TestNG/JUnit? 64. Какие инструкции используются в TestNG/JUnit? 65. Какие assertions есть в TestNG/JUnit? 66. Как выполнять тесты параллельно TestNG/JUnit?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing Automation on Java (урок 4).   Git 67. Для чего используют системы контроля версий? 68. Что такое Git? Каков принцип его работы? 69. Что такое commits, branches в Git? 70. Для чего нужны GitHub, GitLab и другие, базирующиеся на Git, вебхостинги проектов?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Основы работы с Git.   CI 71. Что такое CI? 72. Как автоматическое тестирование интегрируется в CI? 73. Как настроить Job или Pipeline на знакомом вам CI-инструменте? 74. Какие инструменты для генерации репорта после выполнения автоматических тестов вы знаете? 75. Какую информацию должен содержать отчет о выполнении автоматических тестов?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing (урок 4).   Web 76. Что такое клиент-серверная архитектура? 77. Что может выступать в роли клиента? 78. Что такое REST API, SOAP? В чем разница? 79. Какие протоколы передачи данных знаете? 80. Какие способы взаимодействия с API существуют? В чем разница между ними? 81. Как можно протестировать API, что там нужно проверять? 82. Как расшифровывается CRUD? 83. Чем отличается GET от POST? 84. Какие отличия между XML и JSON? 85. Какие знаете форматы передачи данных? 86. Как происходит шифрование? 87. Какие бывают виды баз данных? 88. Охарактеризуйте каждый класс status code (1хх; 2xx; 3xx; 4xx; 5xx). 89. Какие есть HTTP-методы? 90. Какие знаете Web elements? 91. Какие браузеры знаете? В чем их отличие? 92. Для чего необходимы инструменты разработчика в браузере (Chrome DevTools) и как они помогают в тестировании. 93. Что такое кэш? 94. Что такое сессия? 95. Зачем нужны cookies? 96. Что такое фрейм? 97. Что такое HTML/CSS/JavaScript? 98. Какую структуру имеет веб-страница? 99. Зачем чистить кэш? 100. Какие виды тестирования можно применить только к Web? 101. Для чего в веб-страницах используют JavaScript? 102. Что такое REST? 103. Что такое AJAX?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах QA Стартовый (урок 6), Web Testing, SQL Базовый.   Mobile 104. Какие мобильные платформы существуют? 105. Какие версии Android и iOS используются на рынке (минимальные и максимальные)? 106. Какие версии Android нужно тестировать, если заказчик сказал поддерживать с версии 5.0? 107. Назовите типы мобильных приложений. 108. Каков формат файлов сборок приложений для Android и iOS? 109. Что такое ADB? 110. Как снять логи с AOS/IOS? 111. Что нужно проверять при использовании сканера отпечатка/Face ID? 112. Как я могу запускать тесты Android без Appium? 113. Объясните концепцию дизайна Appium.   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Автоматизация тестирования мобильных приложений.   Практические задания 114. Написать чеклист для функционала корзины в интернет-магазине. 115. Написать тестовые наборы данных для поля ввода даты, которое отсеивает пользователей в возрасте до 18 лет. 116. Написать чеклист тестирования формы ввода данных платежной карты. 117. Протестовать «предмет» относительно различных видов тестирования. (Предмет - лифт, карандаш, калькулятор и т. д.) 118. Есть Input поле, принимающее целые значения от 18 до 99 включительно. Надо протестировать с помощью техники тест-дизайна Boundary Values ​​Analysis и Equivalence Partitioning. 119. Есть веб-страница с полями: e-mail, password и кнопкой submit. Необходимо привести примеры отрицательных тест-кейсов, которыми можно проверить эту страницу. 120. Привести примеры тест-кейсов для функционала, находящегося на нескольких страницах проекта (например, поле поиска). 121. Как протестировать процесс оплаты в интернет-магазине? 122. Как протестировать сломанный тостер? 123. Объясните для 7-летнего ребенка, что такое база данных. 124. Определите необходимое количество функциональных тест-кейсов, чтобы проверить Log in форму. 125. Есть форма регистрации в веб-приложении с полями (first name, last name, username, password, repeat password) и кнопкой Register. Какие проверки нужно провести? 126. Поле username должно быть обязательным, но оно не является обязательным. Приведите пример баг-репорта, созданного для этой ошибки. 127. Как бы вы провели smoke-testing для приложения типа Telegram? 133. Как будет выглядеть баг-репорт, если, к примеру, не работает электрический чайник? 128. Есть таблица books с полями: name, price, page_count. Следует выбрать все имена книг, в которых price более 10 единиц и количество страниц от 20 до 100. 129. У вас есть функционал калькулятора, который доступен через веб-браузер по ссылке. Он имеет только функцию делить, так сказать, MVP-версию. Диапазоны для вписывания в числитель и делитель от 0,1 до 99,9. Вывод значения происходит автоматически, потому что front-end реализован на React JS. Как вы будете тестировать этот функционал? Какие виды тестирования примените? Какие техники тест-дизайна используете?     130. Задание на работу с SQL.   извлечь номер телефона и адрес пользователя Muzik. Извлечь данные о пользователях, имеющих сумму заказа более 2000 грн. Подсчитать количество заказов в таблице и общую сумму сделанных заказов.     131. Ваша компания разрабатывает программное обеспечение для медицинских систем, и вы тестируете компонент, управляющий дефибриллятором сердца. Вы заметили, что одно решение в тестовом модуле состоит из 34 независимых атомарных условий. Какой метод тестирования белого ящика следует выбрать для этого и почему? 132. Оздоровительная программа для сотрудников совмещена с оплатой медицинского страхования и имеет следующие правила:   сотрудники, потребляющие 17 единиц или менее алкоголя в неделю, получают $28 скидки на оплату. Для сотрудников, которые заполнят «Оценку риска для здоровья», оплата уменьшается на $23. Сотрудники, участвующие в ежегодном контроле за состоянием здоровья в компании: получат скидку на $50 за то, что имеют индекс массы тела (ИМТ) 25,5 или менее, и $19 скидки при ИМТ ниже 30. Некурящие получают дополнительную скидку на $46. Курильщики, присоединившиеся к курсу отказа от курения, получают скидку в $24. Курильщики, не присоединившиеся к курсу отказа от курения, оплачивают дополнительно $75.   133. Используя технику классов эквивалентности, сколько тестов нужно написать, чтобы покрыть вышеупомянутые условия на 100%? 134. Какое минимальное количество тестов необходимо для покрытия следующих условий автогражданки:   лица до 18 лет не застраховываются. Для мужчин на красном авто прибавляется +15% к стоимости полиса. Для женщин от 18 до 64 лет страховая премия 1000 грн. Для мужчин от 18 до 64 лет страховая премия 1200 грн. Для лиц старше 64 лет страховая премия 1800 грн.   135. Напишите сценарии автоматического тестирования для сортировки по цене и добавлению товара в корзину на сайте. К вашим тестам добавьте документацию с настройками и разместите ваше решение на GitHub.   Middle   Теория 1. Назовите обязанности QA? 2. Что знаете о тестировании нагрузки? В каком случае следует проводить такое тестирование? На каком этапе готовности продукта? 3. Что такое таблица решений/decision table и как её можно использовать? 4. Что может быть критериями запуска и завершения тестирования? 5. Расскажите о вариантах интегрирования тестовой документации в проект, инструментах для работы с ней. 6. Как организовать сквозное тестирование (e2e)? 7. Какие тест-кейсы можно сдать для тестирования баз данных? 8. Приведите примеры подходов для тестирования локализации. 9. Что такое A/B тестирование? 10. Что такое mock/stub? Какие знаете инструменты для работы с ними? 11. Когда нужно использовать технику Pairwise? 12. Что такое fuzz-тестирование и где его используют? 13. Что такое REgexp? 14. Как меняется стоимость дефекта при тестировании программного обеспечения? 15. Каковы пути анализа бизнеса клиента? Как определить целесообразность того или иного функционала? 16. Назовите последовательность выполнения CI/CD процесса на проекте. 17. Какое должно быть процентное соотношение между положительным и отрицательным тестированием на проекте? 18. Какой вид тестирования целесообразнее проводить до релиза? 19. Есть ли разница между bug leakage и bug release? 20. Может ли быть ситуация, когда критерии завершения (exit criteria) не выполнены? Что должно происходить в этом случае? 21. Что мы действительно должны покрывать тест-кейсами, а что считается избыточным расходом времени и денег? Когда нецелесообразно писать тест-кейсы? 22. Для какого функционала труднее всего написать тест-кейсы? 23. Как посчитать Cyclomatic complexity? 24. В чем основная разница между defect detection percentage и defect removal efficiency? 25. Какие модели risk-based testing вы знаете? 26. Что такое тестирование API? Какими инструментами пользуются для его выполнения? 27. Что такое performance testing? Какими инструментами пользуются для его выполнения? 28. Что такое load и stress testing? Какими инструментами пользуются для их выполнения? 29. Что такое contract testing? 30. Какая разница между Scrum и Kanban? 31. Расскажите о ритуалах, ценностях и ролях в Scrum. 32. Как выбор методологии может повлиять на качество разработки? 33. Нулевой спринт в Scrum. Для тестирования есть задание под названием «Настройка среды». Что здесь нужно выполнять?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing, QA Стартовый, “Методология управления проектами. Вступление в SCRUM”.   AQA   Selenium 34. Расскажите, как вы будете строить и внедрять стратегию по автоматизации тестирования. 35. Как взаимодействуют клиентская библиотека Selenium, драйвер браузера и сам браузер? 36. Для чего используют browser capabilities, arguments и options? 37. Что такое iframe и как с ним работать в Selenium? 38. Как обрабатывать браузерные сообщения (alerts)? 39. Что такое Appium? 40. Что такое Electron-based applications? Как использовать Selenium и Appium для их тестирования? 41. Как взаимодействовать с запросами, отправляемыми из браузера? 42. Как взаимодействовать с cookies, LocalStorage и SessionStorage?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing Automation on Java (урок 1) и Автоматизация тестирования мобильных приложений.   Тестовая инфраструктура 43. Что такое и чем отличаются виртуальная машина, симулятор и эмулятор? 44. Что такое контейнер и чем он отличается от виртуальной машины? 45. Как используют виртуальные машины и контейнеры в автоматизации? 46. ​​Что такое IaaS и PaaS? Приведите примеры. 47. Что такое Configuration Management? 48. Что такое Provisioning? 49. Какие команды Linux Shell вам известны? Как с помощью команд Linux Shell найти лог-файл и строчку с ошибкой в ​​файле? 50. Какие команды Windows CMD вам известны? Как с помощью команд Windows CMD найти IP-адрес машины? 51. Что такое SSH и как им пользоваться? 52. Что такое bash и batch скрипты? Зачем их используют?   Web 53. Какая разница между авторизацией и аутентификацией? 54. Как происходит авторизация на сервере? 55. Какие статус-коды ошибок бывают? Может ли сервер отправить код 400, если проблема на его стороне? 56. Как выполнить Debug страницы в браузере? 57. Как протестировать адаптивную верстку? 58. Что такое WebSocket и как проверить обрыв соединения? 59. Каковы есть основные виды уязвимости веб-приложений? 60. Какие инструменты для тестирования Web performance client-side знаете? 61. Какова разница между методами GET и POST? 62. Какая разница между методами PUT и PATCH? 63. Какие знаете сниферы? 64. Какова разница между DROP и TRUNCATE? 65. Что такое case function? 66. Что такое collation? 67. Что такое схема GraphQL? 68. Объясните разницу между OLTP и OLAP. 69. Вспомните разные типы репликации в SQL Server? 70. Что вы понимаете под Self Join? Приведите примеры. 71. Что такое cursor и как им пользоваться?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing Automation on Java, SQL Базовый.   Mobile 72. Что основное нужно проверить при тестировании мобильного приложения? 73. Что такое Manifest.xml в .apk файле и какие данные там указывают? 74. Что такое режим разработчика Do not keep activities? 75. Как происходит перехват трафика http/https для мобильных устройств? 76. В каком виде хранятся данные в мобильных приложениях локально? 77. Как тестировать миграцию локальных данных? 78. Каковы основные компоненты Android-приложений (активити / фрагмент / сервис / интент-фильтр)? 79. Опишите жизненный цикл активити. 80. Что такое утечки памяти? Как найти? 81. Как протестировать билд на Android? 82. Что такое Testflight? Как тестировать с его помощью? 83. Как работает Android? Какая у него архитектура? 84. Как происходит деплой программ IOS/AOS?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Автоматизация тестирования мобильных приложений.   Практические задания 85. Что делать, если разработчик не соглашается, что указанный баг действительно является багом? А если в требованиях использована неоднозначная формулировка? Если бизнес-аналитик, PM и представитель клиента сейчас недоступны, чтобы подсказать? Как можно предотвратить такую ​​ситуацию? 86. Сложилась ситуация, когда команда тестирования не успевает закончить свою работу в дедлайн. Как правильно действовать в этом случае? А если релиз передвинуть нельзя? А если никакие фичи из релиза забрать нельзя? 87. Что делать, если проект уже начался, а QA-инженер там начал работать только когда начали разрабатываться бизнес-фичи? Какие этапы тестирования теперь нужно наверстать и нужно ли это? Как это сделать максимально грамотно без ущерба для загрузки по тестированию новых фич? Какие риски имеет позднее вовлечение QA-инженера в разработку? 88. Веб-страница с полями e-mail, password и кнопкой submit. Назовите отрицательные тест-кейсы, по которым можно проверить эту страницу. 89. Предположим, что после нажатия кнопки submit страница перезагружается и ранее введенные данные исчезают. Как проверить, что информация отправлена ​​в базу данных? 90. Как проверить, что данные отправились на сервер, если у нас нет доступа к бэкенду? 91. Приведите примеры улучшений для приведенной веб-страницы (любая на выбор). 92. Составить Smoke Test Suite для DOU.ua. 93. Протестовать функционал банкомата с помощью техники State Transition Diagram. 95. Написать предельные значения для ввода в форму оплаты товара на сайте. 96. Есть метод POST, который регистрирует нового пользователя на сайте, есть тело запроса, содержащее данные о почте, телефоне, имени пользователя и адресе проживания. Какие кейсы для проверки можете привести? 97. На что следует акцентировать внимание при автоматизации методов API? Что следует проверять? 98. Вы тестируете логин-форму, вводите логин и пароль, нажимаете кнопку логин и ничего не происходит. Ваши действия? 99. В течение 5 минут найдите и опишите дефекты, которые вы видите:     100. Вам нужно сделать Regression Testing за два дня. Как вы это сделаете, если Regression Run охватывает 1000 тест-кейсов? 101. Вы тестируете интернет-магазин, который продаёт карандаши. В заказе нужно указать количество карандашей (максимум для заказа – 1000 штук). В зависимости от заказанного количества карандашей отличается цена:   1–100 – 10 грн за шт. 101-200 – 9 грн за шт. 201-300 – 8 грн за шт.   С каждой новой сотней цена уменьшается на 1 гривну. Задание: используя тест-дизайн, опишите все необходимые тест-кейсы, которые будут максимально покрывать описанную функциональность.   102. Есть приложение типа мессенджера, пользователь заходит в чат и отсылает файл (видит сообщение Failed to send...) Когда это может быть баг, а когда нет? 103. Есть веб-приложение интернет-магазина (регистрация, логин, поиск товаров, корзина и покупки). Программу поддерживают следующие браузеры: Chrome, Safari, Edge. У нас есть ограниченное время на тестирование. Расскажите, как вы будете проверять приложение? 104. Напишите автоматические тестовые сценарии для проверки API операций создания и просмотра GitHub Gists. Интегрируйте ваш проект с известной вам CI-системой.   Senior   Теория 1. Как вы преодолеете трудности из-за отсутствия надлежащей документации для тестирования? 2. Какой подход является наилучшим для старта QA в проекте? 3. Какие препятствия могут возникнуть в обеспечении качества для Agile Tester? 4. Что такое Definition of Done? 5. Когда можно считать, что тестирование окончено? 6. Что такое RCA в тестировании? Нужно ли его проводить? 7. Какой подход вы используете для Test Cases Review? 8. Какие виды рисков существуют? Что такое Mitigation Plan? 9. На основе чего нужно составлять стратегию для проведения тестирования нагрузки? 10. Как часто следует ревьюировать тестовую документацию? 11. Как можно быстро сделать выборку необходимых проверок для смоук-тестирования? 12. Как запланировать загруженность команды тестировщиков? 13. Какую ценность несет анализ результатов тестирования команде и проекту в целом? 14. Как можно подкорректировать флоу разработки, чтобы получать более чистые результаты на выходе и уменьшить количество багов на проде? 15. Расскажите о метриках качества, которые вы применяли. Зачем они нужны? 16. Как провести эстимейт задачи? Каковы техники оценки объема тестирования существуют? 17. Как можно посчитать покрытие тестами функционала? 18. Какое оптимальное количество шагов в тестовом сценарии? 19. Как избежать появления регрессивных дефектов? 20. Что такое тестирование со смещением влево (Shift left testing)? 21. Как будете тестировать программу, если для продукта нет документации? 22. В чем смысл юнит-тестов? 23. Какие минусы полной автоматизации тестирования? 24. Что такое ROI и как его считать? 25. Что такое CI/CD? Какие плюсы и минусы этого подхода? 26. TOP OWASP: какие знаете уязвимости и методы защиты? 27. Что вы думаете по поводу BDD? Когда следует использовать, а когда будет только хуже? Если все же следует использовать, то для UI или API автоматизированного тестирования? 28. Что такое сокеты и как их тестировать, вручную и автоматизировано? Зачем их используют? 29. Когда следует делать стресс-тестирование на проектах? От чего отталкиваться, когда строите сценарий для такого тестирования? Что учесть при выборе инструмента? 30. Расскажите об алгоритмах шифрования трафика. 31. Что такое NIC? 32. Для чего нужен протокол RTP? 33. Что, по вашему мнению, лучше – SIP или PRI? 34. Что такое NAT?     Практические задания 35. Сформулируйте негативные сценарии для POST-запроса, который создаёт нового пользователя. 36. Как вы регулируете конфликтные ситуации между QA и разработчиками? 37. Есть проект, на котором нет тестовой документации, но проекту уже год. Мануальным QA не хватает времени на тестирование, они очень устали, есть желание уволиться. Какое решение по команде можно принять? 38. Продайте мне тестирование как клиенту, не желающему его покупать. Кратко и структурированно опишите вашу работу на каждом из этапов разработки ПО, используя профессиональные термины (не лить воду). 39. У вас есть онлайн-калькулятор. Вы вводите 1+1 и получаете 3. Расскажите, как вы будете искать причину проблемы. 40. Могут ли быть такие виды архитектур? Чего может быть недостаточно для правильной работы архитектур, приведенных ниже?   Пример 1     Пример 2     Пример 3     Пример 4   Вопросы при выполнении этого задания:   какие запросы выполняются по форме авторизации? Какой запрос выполняется, когда мы сохраняем данные в базе данных? Можно ли авторизоваться с помощью GET-запроса и нормально ли так делать? Какой код ответа мы получаем при падении ошибки на сервере, код при ошибочных credentials на форме авторизации? Можно ли заменить SSL-сертификат шифрованием данных в пакете от клиента к серверу для протокола HTTP или это будет равноценной заменой?   41. Есть веб-страница с полями e-mail, password и кнопкой submit. Предположим, что после нажатия кнопки submit страница перезагружается и ранее введенные данные исчезают. Как проверить, что данные отправлены в базу данных? 42. Какое минимальное количество тест-кейсов необходимо, чтобы убедиться в корректной работе этой веб-страницы? 43. Как проверить безопасность на веб-странице (на выбор)?   Редакция DOU.ua выражает благодарность за вопросы и рецензию: Роману Поботину, Андрею Заблоцкому, Виктору Максименко, Марьяне Батюк, Ирине Литвин, Сергею Могилевскому, Святославу Логину, Роману Маринскому, Олегу Заревичу, Олесе Паславской, Тарасу Лирке, Максиму Богуну, Вадиму Гуличу, Виталию Кашубе, Юрию Суравскому, Светлане Франковой, Владимиру Арутину, Станиславу Жупинасу, Людмиле Федчук, Иванне Черухе, Юлии Левченко, Владиславу Куличенко, Юрию Бояру.
Что должен знать Python разработчик в 2020 году

Автор: Влад Сверчков

Общие знания, которые нужны каждому Python разработчику Что должен знать Python Developer, работающий в сфере Data Science Python BackEnd Developer Python Developer в сфере DevOps Automation QA Engineer (Python) Desktop, Mobile, Game Python Developer Итоги   Добрый день, дорогие читатели блога ITVDN! Предлагаем вашему вниманию новую публикацию в рубрике “Что должен знать разработчик...”, в которой мы пишем о самых популярных IT-профессиях. Ранее уже были опубликованы обзоры по FrontEnd и .NET. В этот раз в центре внимания язык Python. В каких сферах он успешно применяется, а в каких буквально незаменим? Какими знаниями нужно обладать, чтобы стать, к примеру, Python BackEnd разработчиком? Все это вы узнаете в нашей статье. Приятного чтения! В последние годы язык программирования Python стремительно набирает популярность. По данным Stack Overflow Developer Survey 2019, в котором приняли участие более 87 тысяч IT специалистов из разных стран, Python в 2019 году опередил даже таких постоянных и несомненных лидеров как Java, С# и С++. Сейчас он широко используется в Data Science (машинное обучение, анализ данных, визуализация), разработке встроенного программного обеспечения и в реализации серверной части веб-приложений. Также при помощи Python можно создавать игры, десктопные и мобильные приложения, писать тесты для ПО, а также упрощать администрирование ОС. Как видите, сферы применения довольно обширны. Мы постараемся затронуть самые популярные, в которых Python используется в качестве основного средства программирования. Начнем с технологий, которые должен знать любой Python-разработчик вне зависимости от специализации.   Python Многие сходятся во мнении, что язык программирования Python  - один из самых легких для изучения, его часто рекомендуют в качестве первого языка начинающим программистам. В то же время это высокоуровневый язык программирования общего назначения, с большим потенциалом повышения производительности программиста, скорости разработки и читаемости кода. Каждый Python-девелопер должен владеть таким набором знаний: Синтаксис языка Python: типы данных, строки и символы, операции с целыми и вещественными числами, отступы, условные и циклические конструкции, функции, списки, словари, классы, файловый ввод-вывод, логические операции и операции сравнения. Популярные библиотеки и фреймворки. Этот пункт зависит от выбранного IT-направления. К примеру, если вы планируете себя реализовать в веб-разработке, отличным выбором станет библиотека Requests, которая облегчит процессы составления HTTP-запросов, также будут полезны фреймворки Django и Flask. Если же вас увлекает машинное обучение, то Theano, TensorFlow, Keras и другие библиотеки помогут с построением и тренировкой нейронных сетей. IDE и редактором кода. Проекты лучше создавать в интегрированной среде разработки (IDE) или в редакторе кода. Это позволяет сделать написание кода максимально удобным: подсветка синтаксиса, автодополнение, инструменты сборки, возможность отладки код и прочее. Самыми популярными платформами являются PyCharm, WingWare IDE, Komodo.   Открытым остается и вопрос, какую версию Python стоит изучать: 2.x либо 3.х? Согласно информации из официального источника разработчиков python.org, в 2020 году прекращается поддержка Python 2.7. Соответственно, стоит сконцентрировать усилия на изучении именно версии 3.х. Разработчик должен иметь глубокие знания языка Python, понимать и уметь применять на практике принципы объектно-ориентированного программирования (ООП).    Английский язык Знание английского языка - естественное требование для каждого разработчика в IT, поскольку большинство новых сведений о технологиях, курсы, учебные и справочные материалы появляются в первую очередь на английском. Для работы в команде разработчиков обычно знаний языка на уровне чтения технической документации и комментирования кода вполне достаточно, однако если вы планируете самостоятельно вести переговоры и переписку с иностранным заказчиком, ваш уровень должен быть выше.    Git & GitHub Git - наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах. Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы.   Алгоритмы и структуры данных Понимание алгоритмов и структур данных является очень важным для любого программиста. Исключением могут быть разве что FrontEnd разработчики. Данные используются во всех сферах нашей жизни: от банковских счетов и медицинских карт вплоть до списка оплаченных покупок в супермаркете. Знание структур данных поможет вам хранить информацию в упорядоченном виде, что упростит работу с ней. Также это повысит общую производительность ваших программ. Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач.   Методологии разработки Agile/Scrum Методологии разработки - это своеобразные путеводители по процессам эффективной разработки ПО. Их применение помогает организовать максимально продуктивную работу всех участников, которые напрямую или косвенно задействованы в разработке продукта в соответствии с выбранной стратегией.  Agile - семейство гибких методологий разработки программного обеспечения, которое позволяет выпускать продукт небольшими частями, постоянно его дополняя и совершенствуя. При таком подходе технические и бизнес-подразделения работают совместно, ПО постоянно обновляется, обеспечивается быстрое принятие решений и выявление неправильных подходов, приложение проще обслуживать, а качество кода готового продукта более высокое. Agile имеет собственный манифест, который подробно описывает основные принципы, на которых строится гибкая разработка. Scrum является одной из реализаций agile-подхода. Его используют многие команды, поэтому знание особенностей работы со scrum-моделью для разработчика серверного ПО является востребованным и весьма полезным. Итак, мы рассмотрели технологии, которыми должны владеть все Python разработчики, не зависимо от прикладной области, в которой они работают. Теперь давайте рассмотрим наиболее популярные специализации, в которых может себя реализовать Python разработчик, а это: Data Scientist BackEnd Developer DevOps Engineer Automation QA Engineer (Python) Проанализируем каждое направление, затронув основные технологии. Также расскажем, каким образом Python используется в Desktop, Mobile и Game разработке.   Что должен знать Python Developer, работающий в сфере Data Science   Легкий и лаконичный Python нашел себе широкое применение в такой важной сфере разработки, как Data Science. Почему именно Python? Он прост в изучении и способен в несколько строк кода создать искусственный интеллект, который будет способен к самообучению, либо посчитать матрицу внушительных размеров. Data Science подразумевает работу с большими объемами данных и включает в себя сбор, анализ, структурирование и дальнейшую визуализацию информации. Каждый специалист данной области занимается: сбором большого количества неупорядоченных данных и преобразованием их в удобный формат; решением бизнес-задач с использованием данных; программированием на Python, R и других языках; работой со статистикой; использованием Machine Learning, Deep Learning и текстовой аналитике; сотрудничеством с IT и бизнесом в равной мере; изучением современных тенденций, которые могут помочь в разработке, которая ведется на данный момент в компании.    Итак, какими технологиями необходимо владеть, чтобы стать Data Scientist?   Линейная алгебра и математический анализ Data Science - это как раз та область, в которой без знаний математики ну никак. Работа с колоссальным объемом данных предусматривает в обязательном порядке применение аппарата линейной алгебры. А это матрицы, векторы, линейные уравнения, различные алгоритмы классификации и кластеризации, которые широко используются (подробнее в следующих разделах). Также необходимо знать оптимизацию средствами матанализа.   Статистика Наука, которая применяет совокупность методов и приемов по сбору, обработке, представлению и анализу числовых данных, чтобы впоследствии на их основании сделать те или иные выводы. Статистика содержит такие важные разделы, как: выборка, распределение частот, среднее значение, взвешенное среднее значение, медиана, вероятность, распределения вероятностей, тестирование значимости, а также ряд других тем и понятий. В интернете есть множество хороших англоязычных курсов, которые помогут освоить разделы статистики, которые обязательны для специалиста Data Science.   Библиотеки и дополнительные инструменты Python Для всевозможных математических вычислений используется Python, а точнее - его библиотеки. К примеру, Matplotlib и Seaborn используются при необходимости визуализации данных, NumPy для работы с уже упомянутой линейной алгеброй. Для научных вычислений прибегают к использованию SciPy. Pandas позволяет выполнять быстрый анализ, очистку и подготовку данных из разных источников - Excel, SQL, веб-страницы, файлы CSV. Таким образом, библиотеки Python предоставляют отличный набор для анализа данных и визуализации. Среди дополнительных инструментов особого внимания заслуживает Jupyter Notebook, который позволяет создавать очень наглядные и информативные аналитические отчеты путем совместного хранения кода, иллюстраций, комментариев, формул и графиков.    Базы данных Поскольку работа Data Scientist-а плотно связана с обработкой большого количества информации, очевидно, что без баз данных тут не обойтись. Необходимо знать, как извлекать и обрабатывать данные, уметь писать и выполнять сложные запросы. Существуют реляционные базы данных (так называемые, SQL базы данных) которые используют структурированный язык запросов, и нереляционные (NoSQL), которые предлагают динамическую структуру для определения и обработки данных. К системам управления баз данных (СУБД) первого типа относят MySQL, PostgreSQL, Microsoft SQL Server, Oracle. Ко второму типу - MongoDB, Cassandra, BigTable, Redis, RavenDB и прочие. Несмотря на широкое распространение NoSQL, специалисты Data Science все же используют SQL технологии, поскольку зачастую работают именно с упорядоченным множеством данных (медицинские карты пациентов, транзакции клиентов и т. д.). Здесь наилучшим выбором станет PostgreSQL/MySQL/SQL Server.   Машинное обучение Это ответвление искусственного интеллекта, основная идея которого состоит в следующем: компьютер должен не просто использовать заранее написанный алгоритм, а самостоятельно обучаться решению поставленной задачи (например, задачи определения символов по отсканированному изображению текста, опознавания лиц и голосов, подборки видеороликов на YouTube с учетом просмотренных ранее). Минимальный набор базовых алгоритмов машинного обучения, который необходимо знать: линейная регрессия, логистическая регрессия, SVM (метод опорных векторов), random forest (“случайный лес”), дерево принятия решений, Gradient Boosting, РСА (метод главных компонент), k-means (кластеризация методом k-средних), k-NN (классификация методом k-ближайших соседей), ARIMA (интегрированная модель авторегрессии скользящего среднего). Говоря о библиотеках Python, которые применяются в машинном обучении, отметим scikit-learn (работа с классическими алгоритмами машинного обучения), TensorFlow и Keras (работа с глубоким обучением, которое направленное на работу с нейронными сетями). Если подытожить вышеизложенное, вам необходимо знать основные алгоритмы кластеризации, классификации, уметь работать с нейронными сетями, умело использовать указанные библиотеки в ходе решения задач, а также понимать и применять на практике принципы машинного обучения. Затем можно будет переходить к подробному изучению глубокого обучения, искусственного интеллекта и разрабатывать проекты для портфолио.   Что должен знать Python BackEnd Developer   Веб-сервера (Nginx, Apache) BackEnd разработчику необходимо знать общие принципы работы веб-серверов, а также понимать, как в целом работает интернет и каким образом ваш код взаимодействует с серверами, базами данных и вообще с “внешним миром”.  Веб-сервер - это программное обеспечение либо аппаратное средство, которое работает с целью приема HTTP-запросов, их обработки и последующей выдачи НТТР-ответов. На данный момент их существует множество, однако наибольшее распространение получили Nginx и Apache. Этим двум веб-серверам посвящено несметное количество статей, которые рассматривают их плюсы и минусы и благодаря которым вы сможете определиться, какой из них лучше всего подходит под решение ваших задач. Но также отметим, что сами по себе Nginx и Apache способны не только конкурировать, а и эффективно взаимодействовать между собой при правильной конфигурации, создавая мощную, гибкую и высокофункциональную систему с возможностью горизонтального масштабирования.   Базы данных (MySQL, MongoDB) Серверная сторона программного обеспечения предусматривает активное использование серверов (от англ. “to serve” - служить). Это компьютеры, которые выполняют какую-либо сервисную задачу по приему, обработке и предоставлению информации пользователям. Для BackEnd разработчика знание серверов и умение работать с ними является настолько же важным, насколько для FrontEnd разработчика - знание триады HTML, CSS и JavaScript.  Работаете со структурированными данными, а среди ваших приоритетов надежность, окупаемость и совместимость со всеми основными ОС? Выбирайте MySQL. Если же вы ориентируетесь на скорость, гибкость, масштабируемость, удобство в управлении СУБД, либо вы просто не можете определить схему для своей БД, вам стоит сфокусироваться на изучении систем управления нереляционными базами данных. Хорошим выбором станет MongoDB благодаря своей распространенности.      Фреймворки Flask/Django Два данных фреймворка являются самыми популярными в веб-разработке на языке Python. Какому стоит отдать предпочтение? Flask подойдет тем, кто заинтересован в тонкостях настройки проекта, и кто хочет иметь полноту власти над всеми его компонентами. Также данный фреймворк лучше подходит для создания REST API. Минимализм, максимальный контроль составляющих приложения, свобода в управлении каждым элементом - это визитные карточки Flask. С другой стороны, если вы ищете набор готовых инструментов, стоит обратить внимание на Django. Он ориентирован больше на стек готовых решений и конечный продукт, нежели на подробную настройку всех компонентов проекта. Если вас интересует разработка и развертывание приложения в кратчайшие сроки, простота в его создании, масштабируемость, поддерживаемость и наличие очень хорошо структурированной и детальной документации по используемому фреймворку, смело выбирайте Django.   Паттерн MVC (Model-View-Controller) Паттерн MVC достаточно востребован в наше время. Данный шаблон предусматривает разделение приложения на три компонента: Модель, Представление, Контроллер, благодаря чему реализуется концепция разделения и закрепления ответственности за каждым компонентом, что упрощает разработку веб-проектов.    Вспомогательные технологии (Celery, RabbitMQ) Среди известных технологий, которые облегчают жизнь BackEnd разработчику можно отметить Celery. Это инструмент для управления очередями задач, который применяется для фоновой обработки долго выполняющихся задач, снижая нагрузку на процессор. Упомянем также и RabbitMQ - менеджер сообщений, который предназначен для передачи данных (так называемых сообщений) между сервисами и упрощающий работу со сложными ресурсоемкими задачами при помощи очередей.   Что должен знать Python Developer для работы в сфере DevOps   Python особо популярен у DevOps специалистов. DevOps - это методология, которая совмещает в себе разработку (Development) и системное администрирование (Operations) с целью увеличения частоты выпуска релизов. Данные специалисты также должны обладать навыками использования облачных технологий и автоматизации инфраструктуры. DevOps инженеры отдают свое предпочтение Python за его простоту, мощность, надежность, многозадачность, поддержку большого количества специальных пакетов, которые повышают эффективность данного языка программирования и за другие преимущества. Python используют, в основном, вместе с командной оболочкой Bash для упрощения процессов развертывания ПО и автоматизации различных задач системного администрирования (написание скриптов). Что еще должен уметь DevOps инженер, помимо написания скриптов? Понимать устройство ОС Linux/Windows. Знать, как работают компьютерные сети (сетевая модель передачи данных TCP/IP и эталонная модель OSI), понимать инфраструктуру сетей. Знать основные сетевые протоколы (HTTP, HTTPS, SSH, IP, TCP и другие). Работать с популярной облачной инфраструктурой AWS. Применять контейнеризацию (Docker), кластеризацию (Kubernetes), принципы CI/CD (Jenkins), инструменты мониторинга (Zabbix, Nagios), управлять ПО на удаленных серверах (Ansible). Работать с веб-серверами (например, Nginx и Apache), уметь их настраивать. Данный стек технологий вполне достаточный для уверенного старта в качестве DevOps инженера.   Что должен знать Automation QA Engineer (Python)   Python также имеет большую популярность в тестировании. Он применяется для написания скриптов, которые автоматизируют процессы проведения тестов. Помимо классических навыков и знаний тестирования необходимо владеть языком Python, разбираться в принципах ООП и также владеть тестовыми фреймворками (в данном случае - PyTest, Robot Framework, unittest и другие).     Desktop, Mobile, Game Python Developer   Менее популярные сферы использования Python. Для разработки настольных приложений можно использовать библиотеку Tkinter и фреймворк PyQt, который позволяет работать с графическим инструментарием, подобным тому, что использует Visual Studio для создания Windows Forms приложений. Игры на Python также можно создавать - PyGame библиотека в помощь. Однако они будут далеко не уровня ААА. При этом Python успешно используется в таких тяжеловесах гейм-индустрии, как World Of Tanks, Battlefield 2 и EVE Online для запуска скриптовых сцен, реализации пользовательского интерфейса, обработки событий. Если говорить о мобильных приложениях, то там Python применяется разве что для реализации серверной стороны приложения. К примеру, клиент Instagram для iOS написан на языке Objective-C, а сервер — на Python.   Итоги Мы рассказали вам об IT-специальностях, в которых Python пользуется наибольшим спросом. Благодаря своей универсальности, кроссплатформенности, простому синтаксису, читабельности и значительному количеству разнообразных библиотек и фреймворков этот язык программирования значительно облегчает работу программистов и тестировщиков, позволяя существенно сократить время написания кода. Сейчас Python просто незаменим в Data Science из-за своего богатейшего инструментария сбора, анализа, обработки и дальнейшей визуализации данных. DevOps инженеры в несколько строк кода могут с легкостью автоматизировать рутинные и/или масштабные процессы. BackEnd разработчики используют все возможности, которые им предоставляют веб-фреймворки для создания эффективных веб-приложений.    На ITVDN есть подборка видео курсов по языку программирования Python, а также по нескольким самым популярным технологиям, которые должен знать специалист. Комплексная программа обучения состоит из 12 курсов общей продолжительностью более 82 часов. Для формирования практических навыков написания кода мы рекомендуем использовать интерактивные тренажеры по Python. Если вам понравилась эта статья, поделитесь информацией с теми, кому она может быть интересна. Пишите в комментариях, на какие еще вопросы, связанные с выбором специальности и планированием обучения вы хотите получить ответы. Мы постараемся ответить на них в наших новых обзорах.   Смотрите также: Знакомство с Python Как стать Python разработчиком?
Notification success