Automation testing

with JAVA

Created by Evgeni Kostadinov

cube

This course aims to:

give you the solid foundations and the practical knowledge to start as a Jr Automation QA specialist.

cube
“Whoever teaches learns in the act of teaching, and whoever learns teaches in the act of learning.”
~ Paulo Freire, Pedagogy of Freedom
cube

Course program

What we will be learning together?


logo cube
java
cube

Variables, data types, conditional logic

  • Primitive Data Types
    • Byte, Short, Int
    • Long, Float, Double
    • Boolean, Char
  • Declaring and Using Variables
    • Identifiers
    • Declaring Variables and Assigning Values
    • Literals
  • String
  • Object
  • Flow of control
cube

Loops

  • What is a Loop?
  • Loop types
    • while loops
    • do … while loops
    • for loops
    • for-each loops
  • Special loop operators
    • break, continue
  • Nested loops
cube

Data structures

  • Array
    • Declaring and Creating Arrays
    • Accessing Array Elements
    • Iterating Over Arrays Using for and forEach
  • ArrayList
  • Map interface
cube

Classes and methods

  • Using Methods
    • What is a Method? Why to Use Methods?
    • Declaring and Creating Methods
    • Calling Methods
  • Methods with Parameters
    • Passing Parameters
    • Returning Values
  • Classes and Objects
  • Declaring an object
    • Fields: Instance and Static
    • Instance and Static Methods
    • Constructors
cube

OOP

  • Fundamental Principles of OOP
  • Inheritance
    • Class Hierarchies
    • Inheritance and Access modifiers
  • Abstraction
    • Interfaces
    • Abstract Classes
  • Encapsulation
  • Polymorphism
  • Cohesion and Coupling
cube

Exceptions

  • What is an Exception ?
    • Error vs. Exception
    • Hierarchy of Java Exception classes
    • Java Exception Handling Keywords
  • The throws / throw Keywords
  • The finally block
  • Common scenarios where exceptions may occur
  • Sequence of Events for throw
    • Checked Exceptions
    • Un-Checked Exceptions
    • User-defined Exceptions
  • Good practices
cube

High quality code

Naming, Formatting, Documentation

Defensive programming

Refactoring

Unit testing

SOLID principles

cube

High Quality Code


import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class HighQualityCode
{
	public static void main (String[] args) throws java.lang.Exception
	{
		String[] topics =
			{"Naming, Formatting, Documentation", "Defensive programming", "Refactoring", "Unit testing", "SOLID principles"};
		
		for( int topic = 0; topic < topics.length; topic++)	{
			System.out.println( topics[topic] );    
		}
	}
}
						
cube

Version control systems

  • What is a Version control system?
  • Why we use VCS?
  • CVS
  • SVN
  • Git
cube

Continuous integration servers

  • What is Continuous integration ?
  • Why we use CI servers?
  • TeamCity
  • TravisCI
  • Jenkins
cube
java
cube

Selenium IDE, Builder and WebDriver API

  • Location strategy
  • Selenium WebDriver
  • CallWrappers
  • Data Driven Testing or DataGenerator
  • Selenium Grid
cube

Test flow control

  • Explicit waits
  • Implicit waits
  • Custom-expected conditions
  • Popup and alert windows
  • Frames
  • Verifications and Asseritons
cube

Design principles and patterns

  • Design concepts
  • Design patterns
    • PageObject model
    • PageFactory
    • LoadableComponent
    • Object map
    • xUnit
cube

Data-Driven Testing and Behavior-Driven Development (Testing)

  • Excel, CSV, Database
  • Data Driven Testing Vs Dynamic data generators
  • Test Driven Development
  • Behavior-Driven Development
    • Cucumber JVM, JBehave
    • Gherkin language
cube

Performance Testing

  • Performance vs. Load vs. Stress Testing – Main Concepts
  • Testing Tools (Web and API)
  • Short Overview
    • Visual Studio testing tools
    • Taurus
cube

Testing software projects (Practice)

  • Analysis
  • Test planning
  • Test case design
  • Implementation
  • Execution
  • Reporting
cube

THANK YOU!

Stay in touch:
java Evgeni Kostadinov
java evgenikostadinov@gmail.com

cube