Course Detail Shape

Agile Programming Techniques

Enhance the art and science of quality-driven agile development, from unit testing to specification by example, and revolutionize how you build software.

About this course

THIS COURSE IS ABOUT QUALITY – IN PARTICULAR, WHAT CAN DEVELOPERS DO TO MAKE SURE THAT WE ARE BUILDING THE RIGHT SYSTEM, AND THAT WE ARE BUILDING IT THE RIGHT WAY.

If we want software development to move from being an art to becoming more of an engineering discipline, we need to become more structured and disciplined in what we do. We look at various technical practices of agile software development and how to apply them towards the goal of quality.​

This course is geared around four primary topics, with each topic building on those before it:​

  • Topic 1 revolves around unit testing – how to write effective unit tests to ensure that the system is working. This includes using test doubles and dependency injection to write true unit tests without complicating the production code.​
  • Topic 2 is about legacy code – how to minimise risk while updating legacy code bases. This includes improving the technical quality without breaking existing behaviour; and how to do this while applying unit tests to legacy code bases that were developed without any consideration given to automated testing.​
  • Topic 3 explores test-driven development (TDD) – how to ensure that the system is well designed and developed. TDD is all about design, not testing. Good design and code results in a system that is easily maintainable. TDD applies unit testing to ensure that the system is working as designed.​
  • Topic 4 introduces specification by example – how to ensure that the system meets the users’ and stakeholders’ needs. Writing automated acceptance tests, and using these to drive TDD, ensures that not only is the system well built, but that it also is the right system.​

how to apply them towards the goal of quality.

What you will gain

Accreditation Logo

ICAgile accredited course: The ICAgile Certified Professional, Agile Programming is granted on the successful completion of this course. This certification is part of the ICAgile Engineering Track along with our Agile Fundamentals and Agile Design and Architecture courses. We offer the complete ICAgile Agile Engineering Track for those looking to become an ICAgile Certified Expert in Agile Engineering (ICE-AE).

What you will learn

  • Write and maintain effective unit tests
  • Refactor code without breaking the observable functionality
  • Identify the seams to add unit tests to legacy code bases
  • Apply test-driven development (TDD) to write tested code
  • Write good specifications / acceptance tests
  • Automate the acceptance tests
  • Perform software development as an engineering discipline.

What you need

You need to have a working knowledge of Java, C#, or JavaScript.​ We also recommend that you have completed some formal Agile training, such as our Agile Fundamentals course.​

This course is great for

  • Developers who wish to design and develop systems using Agile techniques.​
  • Technical Testers wanting a deeper understanding of Test-Driven Development, Behaviour-Driven Development, and Acceptance Test-Driven Development.​

Topics Covered

  • Unit Testing​

This module looks at the structure of a unit test and how to write them. Common patterns and good practices of unit testing are investigated, as well as the need for ongoing maintenance and curation of the test suite.​

  • Dependency Injection​

Proper unit tests should only verify a single module, and often require the use of test doubles to achieve this isolation. The different types of test doubles (stubs, fakes, mocks) are considered, as well as how to inject the test doubles into the unit under test and the use of inversion of control frameworks.​

  • Refactoring​

Making changes to existing code runs the risk of breaking something that was working previously. This module looks at how changes can be made in a structured fashion to minimise the risk of change.​

  • Legacy Code​

Safe refactoring requires unit tests, but what if the code doesn’t have any unit tests? This module introduces how to use seams and enabling points to add unit tests to code that was not designed with testing in mind.​

  • Test-Driven Development and Behaviour-Driven Development​

Most software development practices focus on building the right thing for the users, but ignore technical quality came about as a way to help build technical quality in. This module looks at how to do TDD, as well as how BDD helps to make TDD easier.​

  • Acceptance Test-Driven Development​

While technical quality is important, an elegant system that doesn’t meet the users’ needs is useless. ATDD uses automated acceptance testing to drive TDD and ensure that the resulting system is acceptable to the users. Good practices of ATDD are considered under the name Specification by Example.​

  • Cucumber​

The Cucumber tool allows us to write automated acceptance tests using a language common to (and understandable by) both the technical team and the business. This module looks at the structure of this language (Gherkin) and how to write the fixture code that automates the language.​

Toast Check IconClose Toast Icon