Automated Software Testing: Part 1

Course Description

Embark on a transformative journey into the world of automated software testing with this innovative course from DelftX. "Automated Software Testing: Part 1" is designed to revolutionize your perspective on software testing, proving that it's not just a necessary evil, but a powerful tool to elevate your software development skills. This course, part of a two-course series, dismantles the myth that testing is tedious and boring, instead presenting it as an exciting and crucial aspect of creating flawless software that meets release schedules.

What students will learn from the course:

  • Master state-of-the-art software testing techniques applicable to any system
  • Develop test cases for exceptional, corner, and bad-weather scenarios using various methods
  • Understand the limitations of current testing techniques and select optimal strategies for different contexts
  • Create testable architectures and write maintainable test code
  • Apply specification-based testing, boundary testing, and code coverage techniques
  • Differentiate between unit and system testing, and understand the concept of mock objects
  • Implement design for testability principles and ensure test code quality

Pre-requisite or skills necessary to complete the course:

Introductory knowledge of programming, specifically with Java, is required to fully engage with the course material and practical exercises.

What the course will cover:

  • Automated software testing fundamentals
  • Functional testing techniques
  • Structural testing and code coverage
  • Testability and mock objects
  • Test code quality and smells
  • Specification-based testing
  • Boundary testing
  • Unit vs. system testing
  • Design for testability
  • Test adequacy and code coverage

Who this course is for:

This course is ideal for aspiring or current software developers, QA engineers, and software testers who want to enhance their skills and become five-star professionals in their field. It's perfect for those who wish to gain a comprehensive understanding of automated software testing and its practical applications in real-world scenarios.

How learners can use these skills in the real world:

  • Implement robust testing strategies in their development processes
  • Improve software quality and reliability through effective testing techniques
  • Reduce development time and costs by identifying and fixing issues early
  • Enhance their value as a software professional in the job market
  • Contribute to the creation of more stable and user-friendly software products
  • Implement best practices for test code quality and maintainability
  • Make informed decisions about testing strategies based on project requirements

Syllabus:

Topic 1: Automated software testing

  • Basic principles of testing and its creative aspects
  • Testing vocabulary for improved communication
  • Creating and automating tests for Java programs using JUnit
  • Understanding unit, integration, and system testing, and the testing pyramid

Topic 2: Functional testing

  • Requirement analysis and deriving partitions for concrete tests
  • Partitioning and equivalent partitioning techniques
  • Boundary testing and identifying corner cases
  • Tips for common corner cases based on experience

Topic 3: Structural testing and code coverage

  • Analyzing source code structure for meaningful test derivation
  • Understanding and applying line coverage, branch coverage, and path coverage
  • Deriving minimal test sets for complex branches
  • Using and interpreting industry-standard code coverage tools

Topic 4: Testability and mock objects

  • Differentiating between test levels (unit, integration, system)
  • Identifying factors affecting system testability
  • Proposing refactoring opportunities to increase testability
  • Applying mock objects for unit testing
  • Understanding when to use integration tests instead of mock objects

Topic 5: Test code smells

  • Evaluating internal code quality of test suites
  • Understanding and avoiding flaky tests
  • Refactoring and cleaning smelly test code

This comprehensive course will transform your approach to software testing, making you a more efficient and effective developer or tester. Join now and discover how automated software testing can revolutionize your coding practices and career!