Automation testing

with C#

Created by

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 Loops
  • IList
  • IDictionary
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 Exception classes
    • Exception Handling Keywords
  • Throwing Exceptions
  • 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


public class GeometryUtils {
 public const double PI = 3.14159206;

 public static double CalcCircleArea(double radius) {
  double area = PI * radius * radius;
  return area;
 }

 public static double CalcCirclePerimeter(double radius) {
  double perimeter = 2 * PI * radius;
  return perimeter;
 }

 public static double CalcElipseArea(double axis1, double axis2) {
  double area = PI * axis1 * axis2;
  return area;
 }
}
						
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
    • SpecFlow, 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