Intro. Toolkit setup. IDE/VCS
- JDK, JRE, JVM, bytecode, compiling vs interpreting
IDE: Idea
VCS: Git, GitHub, GitLab, Bitbucket - Creating git repos.
CloningBasic git flow: commit/push/fetch/pull
Branches: merging, pull requests, tags
Java 101: hello world
- Java Basic Syntax, comments, classes, methods, entry point, HelloWorld App
Data types, sizes, static vs dynamic typing, min and max, default values
Java command line - Maven, dependencies
Compiling, running, testing from command line - Conditionals, ternary operator, switch (+break), readability switch vs if
Iterations: for / while / do while
Enums. Limited set of values. impossibility to represent incorrect values - Arrays, declarations
Finding a value, sorting, copying, slicing
Passing as a parameter, returning as a result - Strings. Basic operations
Immutability, StringPool
Java OOP
- OOP intro - split declaration, instantiation (object creation) and behavior
Java modifiers: private, public, protected, package private
Encapsulation, polymorphism, interfaces, nested classes - Object Equality
Equals, hashcode, relations between them, Lombok
Custom equality, know your data! Write proper hashcode
Java Exceptions
- Exceptions
Errors, Checked, Unchecked, try / catch / finally syntax
How to deal, where to catch. try / catch with resources
Java collections
- Collections, basic types, basic operations
List, Set
Generics idea, primitive wrappers, boxing / unboxing, Power and Limitations, Type erasure - Linked List
Stack, Queue - Set, Map, unique, absence of ordering, common behavior
Common usecases
Iteration over Set and Map - Comparator / Comparable
Iterator / Iterable
Sorting with custom comparator
Streams and Functions
- Streams
Combining, Splitterator
Parallelism - lambda syntax, method reference, constructor reference
Functional Interfaces, high-order functions
Optional type
Java misc: IO, working with date&time, annotations
- Java reflection, annotations
Custom annotation writing and processing
Complexity & caveats - Input / Output Streams, Readers, Writers
File operations. Reading/Writing files
IOException - Java8 DataTIme API
Instant, LocalDataTime
Parsing, formatting
Back-end (API) Automation Testing
- HTTP Server, URL, URI, Request, Response, Lifecycle
- REST principles
- HTTP Methods and response codes
- Java http clients (RestAssured, HttpApacheClient)
- Serialization and deserialization
- Data Transfer Objects
- Results validation
UI Automation Testing
- HTML Basics, DOM, web elements
- Selenium WebDriver
- PageObject pattern
- Selenide framework
- TestNG framework
- Docker and Selenoid
- Parallelization
Mobile Automation Testing
- Mobile overview:
- android/ios, development mode
- emulator/simulator
- Appium driver
- what is, adb
- layers for ios/android
- Desired capabilities
- Bonus: How about appium selenide?
- Appium driver II
- Run appium session
- Finding elements with uiAuto2/appium
- Position and visibility element on page
- Locators: types, performance, accessibility, finding
- Bonus: Pain and suffering during connection with real ios device
- Mobile hello world test!
- Setup and start appium from the code
- Basic interactions with application
- Manage pages with page manager class, PageProducer pattern
- Bonus: Two words about BDD. To BDD or not to BDD?
- Common workarounds, tips and tricks
- Layers overlapping
- How about parallel runs?
- Explicit and implicit waits, difference between appium and selenium