Automation testing
with C#
Created by
This course aims to:
Give you the solid foundations and the practical knowledge to start as a Jr Automation QA specialist.
“Whoever teaches learns in the act of teaching, and whoever learns teaches in the act of learning.”
~ Paulo Freire, Pedagogy of Freedom
Course program
What we will be learning together?
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
Loops
- What is a Loop?
-
Loop types
- while loops
- do … while loops
- for loops
- for-each loops
-
Special loop operators
- Nested loops
Data structures
-
Array
- Declaring and Creating Arrays
- Accessing Array Elements
- Iterating Over Arrays Using Loops
- IList
- IDictionary
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
OOP
- Fundamental Principles of OOP
-
Inheritance
- Class Hierarchies
- Inheritance and Access modifiers
-
Abstraction
- Interfaces
- Abstract Classes
- Encapsulation
- Polymorphism
- Cohesion and Coupling
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
High quality code
Naming, Formatting, Documentation
Defensive programming
Refactoring
Unit testing
SOLID principles
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;
}
}
Version control systems
- What is a Version control system?
- Why we use VCS?
- CVS
- SVN
- Git
Continuous integration servers
- What is Continuous integration ?
- Why we use CI servers?
- TeamCity
- TravisCI
- Jenkins
Selenium IDE, Builder and WebDriver API
- Location strategy
- Selenium WebDriver
- CallWrappers
- Data Driven Testing or DataGenerator
- Selenium Grid
Test flow control
- Explicit waits
- Implicit waits
- Custom-expected conditions
- Popup and alert windows
- Frames
- Verifications and Asseritons
Design principles and patterns
- Design concepts
-
Design patterns
- PageObject model
- PageFactory
- LoadableComponent
- Object map
- xUnit
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
Performance Testing
- Performance vs. Load vs. Stress Testing – Main Concepts
- Testing Tools (Web and API)
-
Short Overview
- Visual Studio testing tools
- Taurus
Testing software projects (Practice)
- Analysis
- Test planning
- Test case design
- Implementation
- Execution
- Reporting