101.school
CoursesAbout
Search...⌘K
Generate a course with AI...

    Agile project management

    Receive aemail containing the next unit.
    • Introduction to Agile Project Management
      • 1.1History and Evolution of Agile Methodologies
      • 1.2Key Concepts and Principles of Agile
      • 1.3Introduction to Agile Project Management
      • 1.4Roles and Responsibilities in Agile
    • Agile Mindset and Agile Manifesto
      • 2.1Understanding Agile Mindset
      • 2.2Agile Manifesto and its Principles
      • 2.3Building an Agile Culture
      • 2.4Agilism and the Role of a Leader
    • Agile Leadership
      • 3.1Agile Leadership Styles
      • 3.2Role and Responsibilities of Agile Leaders
      • 3.3Facilitating Team Performance
      • 3.4Managing Conflicts and Backlogs
    • Agile Methodologies and Frameworks
      • 4.1Introduction to Scrum
      • 4.2Introduction to Kanban
      • 4.3Lean and XP Explained
      • 4.4Choosing the Right Agile Framework or Methodology
    • Building an Agile Team
      • 5.1Organizing Agile Teams
      • 5.2Building Psychological Safety Within Teams
      • 5.3Distributed Agile Teams
      • 5.4Team Performance Metrics in Agile
    • Agile Planning and Estimation
      • 6.1Introduction to Agile Planning
      • 6.2Story Points and Velocity
      • 6.3Agile Estimation Techniques
      • 6.4Capacity Planning in Agile
    • Executing Agile Projects
      • 7.1Running Agile Meetings and Setting Sprint Goals
      • 7.2Managing and Prioritizing Backlogs
      • 7.3Tracking Project Progress: Burn-Down and Burn-Up Charts
      • 7.4Handling Blockers and Impediments
    • Agile Quality Assurance
      • 8.1Quality Metrics in Agile
      • 8.2Agile Testing Strategies
      • 8.3Test-Driven Development
      • 8.4Continuous Integration and Continuous Deployment
    • Value-Driven Development
      • 9.1Principles of Value Driven Development
      • 9.2Prioritizing Value in the Backlog
      • 9.3Minimum Viable Product and Incremental Delivery
      • 9.4Value Stream Mapping
    • Agile Contracting and Governance
      • 10.1Agile Contract Models
      • 10.2Vendor Management in Agile
      • 10.3Governance in Agile
      • 10.4Compliance and Documentation in Agile
    • Agile Transformation and Scaling
      • 11.1Agile Transformation Pathways
      • 11.2Implementing Agile at Scale
      • 11.3Challenges in Agile Scaling
      • 11.4Tools for Managing Agile at Scale
    • Case Studies and Best Practices
      • 12.1Agile in IT and Software Development
      • 12.2Agile in Non-IT Industries
      • 12.3Agile Project Pitfalls and Mitigation
      • 12.4Sharing Best Practices
    • Reflection and Synthesis
      • 13.1Agile Leadership Reflections
      • 13.2Applying Agile Methodologies in Real-life Scenarios
      • 13.3Adapting Agile Frameworks to Unique Situations
      • 13.4Continuing Education and Certification in Agile

    Agile Quality Assurance

    Test-Driven Development in Agile

    Test-Driven Development (TDD) is a software development approach that has become a fundamental part of Agile methodologies. It is based on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test, and finally refactors the new code to acceptable standards.

    Introduction to Test-Driven Development

    TDD is a technique that reverses the traditional cycle of software development. Instead of writing code and then testing it to see if it works as expected, in TDD, the test is written first. The developer then writes the code that will make the test pass. This approach ensures that every piece of code is covered by at least one test, which leads to higher quality software and fewer bugs.

    The Process of TDD: Red, Green, Refactor

    The TDD process is often described as "Red, Green, Refactor." Here's what each step involves:

    1. Red: Write a test for the next bit of functionality you want to add. The test should fail because the functionality isn't there yet. This is a red signal.

    2. Green: Write the minimum amount of code necessary to make the test pass. This is a green signal indicating that the code functions as expected.

    3. Refactor: Now that the test is passing, take a moment to clean up the new code. Make it clear, simple, and read well. Also, look at the overall structure of your code. If you see any duplication or ways to improve it, do so now. Make sure all tests still pass.

    This cycle is repeated over and over, for each new feature, leading to a robust suite of tests that can be run at any time to provide confidence that the software is still working as expected.

    Benefits and Challenges of TDD

    The benefits of TDD are numerous. It leads to better code quality, fewer bugs, and more maintainable code. It also provides automated regression testing, which means that developers can make changes to the code with confidence, knowing that they will be alerted if they break anything.

    However, TDD also has its challenges. It requires discipline to write tests first and to keep them up to date as the code evolves. It can also be difficult to learn how to write good tests, especially for developers who are new to the practice.

    Best Practices for Implementing TDD

    Here are some best practices for implementing TDD:

    • Write the smallest test possible: The smaller the test, the easier it is to understand what is being tested and why it is important.
    • Run all tests after every change: This provides immediate feedback if a change has broken anything.
    • Refactor code after making it pass the tests: This keeps the code clean and easy to understand.
    • Keep tests and code together: This makes it easier to see what code is being tested and to keep the tests up to date as the code changes.

    In conclusion, TDD is a powerful practice that can significantly improve the quality of your software and the productivity of your team. It requires discipline and practice to master, but the benefits are well worth the effort.

    Test me
    Practical exercise
    Further reading

    Howdy, any questions I can help with?

    Sign in to chat
    Next up: Continuous Integration and Continuous Deployment