- вебинары + самостоятельная работа над заданиями
- даты вебинаров 02,06,09,13,16,20,23,27,30 августа, 03,06,10,13,17,20,24,27 сентября
- время 17:30 – 20:30
- ссылка на подключение доступна в приглашении в календарь
- записи вебинаров будут доступны с вечера дня вебинара на 10 дней
- после каждого вебинара будет сформулировано задание на самостоятельную практику
- срок выполнения – до следующего вебинара
- работу будут оценивать инспекторы путем проведения code review
- результаты code review будут приходить в интерфейс github и дублироваться на почту
- Убедиться, что вы в slack-чате
training-qa-automation-java-2021-08
- [Если нет] завести аккаунт на github
- Сделать форк репозитория с материалами
- Добавить в ваш новый репо коллабораторов:
- в
- Установить jdk ≥8 и IntelliJ IDEA (предпочтительнее Ultimate, но и Community подойдет)
В случае вопросов пишите в slack-чат и на корпоративную почту: a.roshchina
вебинар 01 от 02.08.2021
- Java Platform definition
- Basic terms: JVM, JRE, JDK
- Sourcepath and Classpath
- Project settings and structure: modules, sourcepath + classpath
- Main and Test sources
- Workspace
- Views and hotkey switching
- Editing sources and foreground compilation
- Debugging methods
- Running tests from IDE
- Running application with run configuration and hotkey shortcut
- Full application building from Maven view
- Hotkey shortcuts for git workflow operations
- Main hotkeys
- Build lifecycles
- Lifecycle phases
- Plugins
- Managing plugins with pom.xml
- Dependency artifacts: JARed classes, sources, javadocs
- Artifact repositories
- Artifact identifying
вебинар 02 от 06.08.2021
- Local repo
- Commit
- Log
- Tag
- Branch
- Remote repo
- Clone
- Push
- Pull
- Forks
- Pull Request
- PR workflow
вебинар 03 от 09.08.2021
- Learning through testing
- Single-line comments
- Multi-line comments
- JavaDoc comments demo
- Package: why?
- Package declaration
- Import directive
- Class: why?
- Class declaration
- Class variables declaration
- Static initialization section
- Method: why?
- Method declaration
- Method body code block
- Method variables
- Returning values
- Methods Overloading
- Dot notation
- Formal and factual arguments
- Static import directive
вебинар 04 от 13.08.2021
- Variable declaration scopes
- Declaration
- Initialization
- Literals
- Default initialization values for class and method variables
- byte
- int
- short
- long
- float
- double
- char
- boolean
- Wrapper types and main features: referenced, constants, string parsing
- Autoboxing/unboxing and performance issue
вебинар 05 от 16.08.2021
- type casting
- instanceof
-
+, -, *, /, %
- Typed operators: 1/3 vs 1./3
- Arithmetic types promotion
- ArithmeticException
- Types Overflow and solution with BigInteger
- FP precision loss and solution with BigDecimal
- Type-safe
-
&, |, !
- Lazy and eager form
-
==, !=, <, <=, >, >=
- Reference types issue: absence of
===
and.equals()
- Ternary operator
вебинар 06 от 20.08.2021
-
if
-
switch
and its limitations
-
for
-
do
andwhile
- "foreach"
- Declaration
- Initialization
- API: addressing, length
- Exceptions
- "Immutability"
- "foreach" cycle
вебинар 07 от 23.08.2021
- Why?
- Declaration
- Passing
- Using
- Limitations
- Primitives
- References
- Declaration
- Initialization with literal and constructor
- "Immutability" vs StringBuffer/StringBuilder
- API
- Strings equality:
==
vs.equals()
- Enumerated type concept: why?
- API
- Using with
switch
вебинар 08 от 27.08.2021
- Type information
- Object data information
- Methods call stack information
- creating exception instance
-
throw
operator - Methods call stack tracing
-
try
section -
catch
section -
finally
section
- multi-catch
- try-with-resources
- Built-in types
- Errors vs Exceptions
- Checked vs Runtime exceptions
вебинар 09 от 30.08.2021
- Encapsulation
- Polymorphism
- Inheritance
- Declaring lambdas
- Compiler types inference
- Functional interface
- Method reference
вебинар 10 от 03.09.2021
-
toString()
-
equals()
andhashCode()
contract
-
Set
API -
List
API -
Map
API
-
File
andPath
- File IO with Stream API
- Simple file operations with utility class
Files
вебинар 11 от 06.09.2021
- Концепция фреймворка
- Аннотации
- Подключение JUnit5 в maven
- Жизненный цикл тестового класса
- Именование тест-кейса/тест-класса и теста/тест-метода
- Понятие трасс выполнения (flows) и граничные условия
- Роль фикстуры
- Тест = фиксированная трасса выполнения
- Тестовый набор = спецификация компонента
- Типизированные сравнения средствами основного фреймворка
- Исключения
- Таймауты
вебинар 12 от 10.09.2021
- Понятие покрытия
- Способы расчета покрытия
- Анализ отчета JaCoCo
- Когда и сколько раз создается объект тестового класса?
- Как максимально реюзать фикстуры?
- Методы жизненного цикла теста
- Fixture Builders
- Зачем нужны test suites?
- Теги
- Запуск наборов при сборке
вебинар 13 от 13.09.2021
- Обзор Retrofit
- Обзор REST Assured
вебинар 15 от 20.09.2021
- На каких уровнях можно замещать БД
- Утилиты работы с JDBC
- Управление транзакциями
- На каких уровнях можно замещать внешний сервис
- Тестовые дублеры для внешних веб- и REST-сервисов: WireMock
вебинар 16 от 24.09.2021
- Командная работа над проектом
- Фидбек от инспекторов
вебинар 17 от 27.09.2021
- Командная работа над проектом
- Фидбек от инспекторов