With the increasing use of Test Driven Development and other collaborative methodologies, like DevOps, that require increased collaboration between programmers and testers, having an understanding of how the Java programming language works from a testing perspective is becoming a necessary skill for soft ware testers. This course is a handson introduction to the Java programming language from a software tester’s point of view. The goal of this course is not to teach students how to program in Java but rather to understand how Java is designed to be used and what the common programming and code design failures are most likely to made by programmers. The Java programming concepts will be presented not from the perspective of writing code, but rather from the perspective of doing critical analysis of existing Java code, and developing strategies for developing tests and test methods that can be used in both structural and functional testing of Java applications. The course reviews sound and generally accepted best practices for software testing, and demonstrates how they can be “tuned” to be more sensitive the sort of errors that Java developers and designers are prone to make. The course walks through the basics of both the Java language, and good OO programming standards and practices, and shows how that knowledge can be used to plan and design tests that identify not only functional problems in the code, but poorly designed or non-standard code that can be the source of errors in the code development. One of the methodologies that is becoming standard in Java development is the use of test driven development or TDD. Students will be introduced into the TDD methodology through hands on examples which are designed to demonstrate the role the tester plays in these collaborative methodologies like TDD and how to work effectively with testers in these environments. The course concludes with a look at code reviews and walkthroughs and the most effective roles, practices and contributions that testers can provide in those peer review settings. All of the theory presented is reinforced with examples, real world case studies, hands on exercises and worked examples.
Since this is a course for testers, students should have a basic knowledge of software testing practices and techniques. Some experience with a programming language is helpful, but a basic entry level know ledge of programming concepts, ideas and terminology is assumed.
4 Days/Lecture & Lab
The course is intended primarily for software testers although it is also appropriate for developers looking to improve the quality of their programming.
Review of Basic Testing Concepts and Practices
- Object Oriented Programming Concepts and Best Practices
- How Java works: Runtime environments, JVMs, bytecode, class libraries, etc.
- Configuration issues and pitfalls for Java
- Java coding best practices
- Writing functional and structural tests for Java code
- Common errors in Java class design and code structure
- Understanding inheritance and common errors made implementing inheritance
- Exception handling and best practices
- Java APIs and Class Libraries
- Code smells and symptoms of code design problems
- Test Driven Development
- Acceptance Test Driven Development
- Code Reviews and Code Walk throughs
- Automated tool for testing and analysis.
- Current best practices and standards