| Automation | Java Coaching | Java Patterns |
- Arrays
- Associations
- Bags
- Collections
- Configuration
- Context
- CSV resources
- Delegation
- Exceptions
- Hollywood principle
- Idioms
- JDBC
- Model
- Money
- Polymorphism
- Pools
- Resources
- Rules engines
- SOLID
- Template
- Thread
- Tuples
- Types
- Xml
All programming statements are formed on three basic constructs
One instruction follows another e.g.
foo()
bar()
An Instruction is performed if a condition is true e.g.
If Then Else
Switch
An Instruction is performed repeatedly in a loop. e.g.
for( i=1 ; i<10 ; i++) { ... }
while(notFinished) { doWork(); }
do { work(); } while(notFinished);
work() { while(notFinished) { work() } }
- 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 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
- Why Declarative programming is more appropriate for FDD/BDD than Imperative programming
- 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
- Behaviour Driven Development
- Feature files
-
- Tagging
- Steps
-
- Regular Expressions
- System Model
- Runners
- settings.xml
- pom.xml
- Maven life cycle
- Maven Plugins
- WebDriver API
- Browser Factory
- Page Objects
- Page Object Factory
- Locator Strategy / css vs xPath
- Selenium Grid
- Practical CI
- http://docs.oracle.com/javase/tutorial/index.html
- https://www.udemy.com/java-tutorial/#curriculum
- https://www.udemy.com/java-the-complete-java-developer-course/#curriculum
- 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"
- 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.
- Test should be considered skipped, not a failure.
- Single Responsibility
- Open for extension, Closed to modification
- Liskov Substitution principle
- Interface Segregation principle
- Dependency Inversion principle https://en.wikipedia.org/wiki/SOLID_(object-oriented_design) http://www.oodesign.com/design-principles.html
http://wiki.c2.com/?DesignByContract
https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/
https://en.wikipedia.org/wiki/Design_Patterns
https://en.wikipedia.org/wiki/Type_theory
https://en.wikipedia.org/wiki/Taxonomy_(general)
https://en.wikipedia.org/wiki/Ontology_(information_science)