Skip to content

Latest commit

 

History

History
206 lines (166 loc) · 4.89 KB

File metadata and controls

206 lines (166 loc) · 4.89 KB

Java Coaching Topics

| Automation | Java Coaching | Java Patterns |

Programming Fundamentals

All programming statements are formed on three basic constructs

Sequence

One instruction follows another e.g.

  foo()
  bar()

Selection

An Instruction is performed if a condition is true e.g.

	If Then Else  
	Switch

Iteration

An Instruction is performed repeatedly in a loop. e.g.

for loop

	for( i=1 ; i<10 ; i++) { ... }

while loop

	while(notFinished) { doWork(); }

do while loop

	do { work(); } while(notFinished);

recursion

	work() { while(notFinished) { work() } }

Programming Fundamentals

  • Variables, Constants, Scope and Types
  • What are Coupling and Cohesion
  • Why decoupling and high cohesion are are important
  • What are Algorithms, Data Structures, Patterns and idioms, why the distinction is important.
  • https://www.quora.com/What-is-a-call-stack

Java Fundamentals

  • Java class Design : Interfaces, Abstract Classes, Final Classes
  • Using inBuilt Classes, Types, Strings, Dates etc.
  • String Processing and Formatting
  • Collections & Generics
  • Java Regular expressions
  • Recursion
  • Input and Output
  • Exceptions and Assertions
  • Sorting and Searching
  • Polymorphism

Different Programming Paradigms

Imperative Programming

Declarative & Functional programming

Object Oriented Programming

  • Why Declarative programming is more appropriate for FDD/BDD than Imperative programming

Practical Coding Topics

  • Unit Testing with JUnit
  • Using slf4j/log4j for logging
  • Java Strings, Comparing, Formatting, StringBuffer
  • Pojo, Memento, Parameter objects
  • Exceptions, Handing exceptions, writing custom exceptions
  • Assertions, Checked & UnChecked
  • Java Collections (Generics)
  • Loading resources from classpath vs absolute paths

Cucumber

  • Behaviour Driven Development
  • Feature files
    • Tagging
  • Steps
    • Regular Expressions
  • System Model
  • Runners

Apache Maven

  • settings.xml
  • pom.xml
  • Maven life cycle
  • Maven Plugins

Selenium WebDriver

  • WebDriver API
  • Browser Factory
  • Page Objects
  • Page Object Factory
  • Locator Strategy / css vs xPath
  • Selenium Grid
  • Practical CI

Online Training Java Tutorials

Software Engineering

  • Fluent Interfaces
  • Recursion
  • Separation of Concerns
  • Low Coupling and High Cohesion
  • Law of Demeter
  • Tell don't Ask
  • Hollywood Principle, "Don't call me, I'll call you"

JUnit

  • Assume vs Assert (rule of thumb)
  • Assumptions are for use as Pre-conditions.
  • Failures indicate the test offers no meaningful result.
  • e.g. When testing eligibility,
  • "Given Customer exists" is a pre-condition.
    • Test should be considered skipped, not a failure.
      • Change is still like to be necessary.
    • Asserting are for use as Acceptance Criteria/Post
      • Failure is a failure of the system under test.
      • Also Exceptions, likely failure of Test Suite.

SOLID principles

Code to a Contract / Design by Contract

http://wiki.c2.com/?DesignByContract 

Data Driven Testing

Advanced Programming Topics

Big-O Complexity

https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/

Design Patterns

https://en.wikipedia.org/wiki/Design_Patterns

Builder Pattern

Composite Pattern

Command Pattern

Factory Method

Singleton

Computer Science Topics

Type Theory

https://en.wikipedia.org/wiki/Type_theory

Set Theory

Taxonomy

https://en.wikipedia.org/wiki/Taxonomy_(general)

Ontology

https://en.wikipedia.org/wiki/Ontology_(information_science)