These are the slides of the TDD kata event organised at URV university.
Slides are meant to be an introduction into TDD, explaining why this methodology improves the software development cycle, reducing its costs and assuring it's quality.
Test-driven development (TDD) is a software development process where test cases are developed before code to validate requirements. The TDD process involves repeatedly writing a test, making it fail, then writing code to pass the test and refactoring code. TDD results in code with fewer defects, quicker feedback, and requirements that drive design. Tests cover valid and invalid inputs, errors, boundaries, and everything that could break. TDD improves development cycles, defects, documentation, and competitive advantage for businesses.
This document discusses test-driven development (TDD) and its benefits. It notes that TDD can find bugs earlier and reduce costs, though traditional testing is still needed. TDD involves writing a test first, then code to pass the test, and refactoring code while ensuring all tests remain passing. Practicing TDD through coding "katas" or exercises in a "dojo" setting can improve skills over time through repetition. While TDD takes more initial time, the benefits are more confidence, productivity, reliability and agility in the long run.
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...mCloud
This document discusses the importance of testing software. It outlines 30 tips for writing tests, including writing tests before code, treating tests like code, minimizing asserts per test, using data providers, and allocating time for testing in estimates. Testing helps catch bugs, improve code quality, and ensure stability. The document emphasizes that automated testing is key and should test everything that could break an app.
The document discusses Test Driven Development (TDD). TDD is a software development process where test cases are written before implementation code to specify requirements, with code only written to pass newly created tests. The TDD cycle involves writing a test, running the test which fails with no code, writing minimum code to pass the test, running all tests which should now pass, and refactoring code before repeating. Examples like calculating prime number sums and FizzBuzz are provided. Benefits of TDD include improved code quality, reduced bugs, and faster development through continuous testing and feedback. Best practices include pair programming, test planning, and using testing frameworks.
This document outlines an agenda for a coderetreat event. It includes:
- An introduction that describes the event organizer and purpose of learning through sharing.
- An agenda with sessions on test-driven development, extreme programming, cost of change, simple design principles, and mechanics of TDD.
- Descriptions of pair programming, test-driven development, and the Game of Life cellular automaton that will be used in exercises.
- Logistical details like session structure, pairing rotations, and expectations around deleting code between sessions.
This document discusses test-driven development (TDD) and unit testing. It defines TDD as a process that involves writing a failing test first, then implementing code to pass that test, and refactoring if needed. Key benefits of TDD and unit testing include reduced bugs, lower maintenance costs, and improved code design. The document provides guidelines for writing good unit tests and emphasizes that tests should be quick, isolated, and answer what behavior was tested and what the expected and actual results were.
This document discusses test driven development (TDD) and how it can be applied to legacy code. It describes the TDD process and patterns for writing tests. When applying TDD to legacy code, it recommends identifying change points and inflection points in the code. Tests should be written to cover the inflection point by breaking dependencies. Then changes can be made using the full TDD process, and the covered code can be refactored.
Test-driven development (TDD) is a software development process where test cases are developed before code to validate requirements. The TDD process involves repeatedly writing a test, making it fail, then writing code to pass the test and refactoring code. TDD results in code with fewer defects, quicker feedback, and requirements that drive design. Tests cover valid and invalid inputs, errors, boundaries, and everything that could break. TDD improves development cycles, defects, documentation, and competitive advantage for businesses.
This document discusses test-driven development (TDD) and its benefits. It notes that TDD can find bugs earlier and reduce costs, though traditional testing is still needed. TDD involves writing a test first, then code to pass the test, and refactoring code while ensuring all tests remain passing. Practicing TDD through coding "katas" or exercises in a "dojo" setting can improve skills over time through repetition. While TDD takes more initial time, the benefits are more confidence, productivity, reliability and agility in the long run.
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...mCloud
This document discusses the importance of testing software. It outlines 30 tips for writing tests, including writing tests before code, treating tests like code, minimizing asserts per test, using data providers, and allocating time for testing in estimates. Testing helps catch bugs, improve code quality, and ensure stability. The document emphasizes that automated testing is key and should test everything that could break an app.
The document discusses Test Driven Development (TDD). TDD is a software development process where test cases are written before implementation code to specify requirements, with code only written to pass newly created tests. The TDD cycle involves writing a test, running the test which fails with no code, writing minimum code to pass the test, running all tests which should now pass, and refactoring code before repeating. Examples like calculating prime number sums and FizzBuzz are provided. Benefits of TDD include improved code quality, reduced bugs, and faster development through continuous testing and feedback. Best practices include pair programming, test planning, and using testing frameworks.
This document outlines an agenda for a coderetreat event. It includes:
- An introduction that describes the event organizer and purpose of learning through sharing.
- An agenda with sessions on test-driven development, extreme programming, cost of change, simple design principles, and mechanics of TDD.
- Descriptions of pair programming, test-driven development, and the Game of Life cellular automaton that will be used in exercises.
- Logistical details like session structure, pairing rotations, and expectations around deleting code between sessions.
This document discusses test-driven development (TDD) and unit testing. It defines TDD as a process that involves writing a failing test first, then implementing code to pass that test, and refactoring if needed. Key benefits of TDD and unit testing include reduced bugs, lower maintenance costs, and improved code design. The document provides guidelines for writing good unit tests and emphasizes that tests should be quick, isolated, and answer what behavior was tested and what the expected and actual results were.
This document discusses test driven development (TDD) and how it can be applied to legacy code. It describes the TDD process and patterns for writing tests. When applying TDD to legacy code, it recommends identifying change points and inflection points in the code. Tests should be written to cover the inflection point by breaking dependencies. Then changes can be made using the full TDD process, and the covered code can be refactored.
This presentation gives you the evidence as to why unit testing works and a process for how to bring it your team as soon as possible. There's a reason why the growth of unit testing, and automated unit testing in particular, has exploded over the past few years. It not only improves your code, it's faster than releasing code without tests. You'll learn: What, exactly, is a unit test?; The 7 reasons why managers love unit testing; and how to change mindset and processes to start unit testing now.
This document provides an introduction to unit testing with RSpec. It explains that unit tests check individual sections of code and integration tests check how those sections work together. It then describes the red-green-refactor process of test-driven development, where you first write a failing test, then pass the test with the simplest code, then refactor the code. Resources for learning more about RSpec and practicing tests are also provided.
TDD benefits
Clean Design
Fast Feedback
Concrete Evidence That Your Software Works
Write Better Code
Reduced Gold-Plating
Regression Test Suite
How To Do TDD
Analyze the requirements and write the list of tasks or features
Pick a task or feature
Brainstorm a list of tests for the task or feature
Review the tests list and pick a test
Write the test case
Run the test case and see it fails to compile
Write only enough code that the test case compiles
Run the test and see running the code fails
Write only enough code to just pass the test
Refactor the production code and eliminate duplication
Repeat
Test-driven development is generally regarded as a good move: it should result in simple decoupled design, your tests tend to cover behaviour not methods, and far fewer bugs. However, just getting unit tests in on a real, commercial project is hard - switching to TDD is even harder. Often you can start a project with good intentions and coverage, then the deadline looms and the tests go out then the hacks come in. So, instead of beating ourselves up about not being perfect let's look at an interative approach to adopting TDD principles. We'll look at tactics for selling TDD to your client, boss and colleagues. This talk will also cover methods for making TDD easier for you by showing you what tools you can use to integrate it into your development environment. In the project itself, we'll examine how we can make small but permanent steps towards full TDD, without losing that progress when deadlines hit. We'll also cover a few methods for learning on your own time and how the whole process can actually be made quite enjoyable.
The Google Test Automation Conference (GTAC) is an annual test automation conference hosted by Google. 2016 is 10th GTAC. I'll share the most impressive parts of experience sharing & tool I heard in GTAC 2016 in this slide.
The document discusses challenges with the traditional waterfall process and separating testing from development in Agile. It advocates for a whole team approach where testers and developers collaborate throughout the sprint. Specification workshops are recommended to develop shared understanding. Automation and living documentation are presented as ways to prevent bugs. Quality is defined by how the software performs for users rather than bug counts. Measuring what matters to the business, rather than low level risks, is advised.
Agile Software Development for Non-Developershamvocke
A Crash Course Introduction into the world of Agile Software Development for people with a sparse or non-existent background in Software Development.
I held this presentation as a Brownbag session at ThoughtWorks Hamburg. The TDD part included a live coding session and the part about Continuous Integration and Continuous Delivery was backed with an example of a real Continuous Integration Server that worked on the results from the TDD live coding session.
This document discusses test driven development (TDD). It begins by explaining the basic TDD process of writing a failing test, getting it to compile, making it pass without changing existing code, and then refactoring. It outlines some benefits of TDD like improved code quality and confidence in changes. It also notes some challenges like additional overhead and keeping test code clean. Overall, it argues that while TDD requires proper implementation, it can help produce higher quality code with fewer bugs.
This document discusses refactoring code through careful modifications that do not change functionality. It emphasizes that refactoring requires rigorous unit testing to be done correctly. Successful refactoring can be achieved through uninterrupted work, pair programming, or test-driven development with an automated testing framework. Tests should be written early and often to catch errors introduced during refactoring. The minimum requirement for testing is assert statements, which provide an easy way to start testing without complex tools. Overall, the document stresses that refactoring is best approached as a disciplined process guided by thorough automated testing.
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]Agile đây Vietnam
Stanly Lau is an agile coach and software developer based in Singapore who has worked with companies of various sizes in industries such as insurance, mobile safety, education, logistics, and banking. The document discusses legacy code and provides tips on how to deal with it. Legacy code is defined as code without unit tests that is difficult to change and prone to bugs. It recommends adopting modern engineering practices like test-driven development and refactoring. It also outlines an approach for identifying change points, breaking dependencies, writing tests, and then making changes to legacy code in a safe manner.
Introduction to Continuous Integration. Combining with Acceptance Test Driven Development, Test Driven Development, Showing how a developer in agile team does the work.
This document provides an introduction to test-driven development (TDD), including its goals, benefits, and challenges. TDD is an iterative, test-first approach to development where functionality and behavior are defined by tests. Tests are written before code and define the desired API and design. Benefits of TDD include reduced defects, increased initial development time, and easier refactoring and collaboration. Adopting TDD requires practice and a focus on good design principles like separation of concerns.
Test-drevet utvikling er en hellig gral innen smidig utvikling og ofte hører man uttrykk som "TDD fører til bra design", "med TDD trenger man ikke tenke på arkitektur" og "TDD er meningen med livet" (okei, det siste der fant jeg muligens på selv). Men vil TDD automatisk føre til bra design? Eller er det noe de ikke har fortalt deg?
This document discusses Error Driven Development (EDD) as an alternative to traditional Test Driven Development (TDD). EDD emphasizes reproducing bugs through tests before fixing them. It addresses common reasons teams avoid TDD, such as not making mistakes or tests taking too long, by arguing bugs will still occur and fixing them without tests is not faster. EDD aims to have teams focus on bugs by learning to reproduce them in tests in order to fix issues and avoid regressions.
Lập trình hướng kiểm thử - Test Driven developmentAnh Lê
This document discusses test driven development (TDD). It begins with an overview of TDD, explaining that TDD is a strong methodology that helps prevent bugs regardless of programming language. It then explains how to implement TDD using the "red/green/refactor" process in incremental baby steps. An example of reversing the last two characters of a string is provided. Benefits of TDD include clean code, preventing bugs, serving as documentation, and helping programmers design better. Common mistakes in TDD are also discussed. The document concludes with questions and answers about TDD.
This document discusses test-driven development (TDD) practices. It covers the characteristics of good tests, what TDD is and why it is used, the TDD development cycle of red-green-refactor, best practices for TDD, anti-patterns to avoid, and practices for writing testable code. The key aspects of TDD outlined are writing tests before code, running tests after each small code change, and refactoring code between test cycles.
The document discusses several important topics for software development including unit testing, clean coding principles, design patterns, and useful development tools. It emphasizes that tests are important for preventing bugs and should be included in all projects. Clean coding principles like DRY, KISS and SRP help produce code that is easier to read, change and maintain. Design patterns provide solutions to common problems and a shared vocabulary for developers. Useful tools include IDEs, version control systems, code analysis tools and text editors which can help programmers work more efficiently if used properly.
The document discusses test-driven development (TDD) and refactoring. It explains what TDD is, how to implement it in three steps - writing a failing test, making the test pass, and refactoring code - and provides an example of modeling a calendar to track holidays using TDD. The document also discusses benefits of TDD like catching mistakes early, increasing coding confidence, and making it easier to implement new requirements through refactoring.
The document introduces the Guildford Coding Dojo, which is a place for learning coding skills through deliberate practice, pair programming, and test-driven development (TDD). Attendees work on problems like FizzBuzz in timed pomodoro cycles, writing automated tests first before coding solutions and refactoring code with a focus on simple design. Rules include no distractions, practicing TDD and pair programming, and producing code that is well-tested, clear, and avoids duplication.
This document discusses test-driven development (TDD) and its importance for software development. It notes that TDD is not just about unit testing code, but is a key part of software craftsmanship. When practicing TDD, tests should be written from the perspective of understanding by business analysts and customers, not just for code implementation. TDD promotes a short feedback loop to continually refine code through testing. Examples provided demonstrate how to use TDD for a FizzBuzz coding exercise by first writing tests to define requirements and then coding to pass those tests.
This presentation gives you the evidence as to why unit testing works and a process for how to bring it your team as soon as possible. There's a reason why the growth of unit testing, and automated unit testing in particular, has exploded over the past few years. It not only improves your code, it's faster than releasing code without tests. You'll learn: What, exactly, is a unit test?; The 7 reasons why managers love unit testing; and how to change mindset and processes to start unit testing now.
This document provides an introduction to unit testing with RSpec. It explains that unit tests check individual sections of code and integration tests check how those sections work together. It then describes the red-green-refactor process of test-driven development, where you first write a failing test, then pass the test with the simplest code, then refactor the code. Resources for learning more about RSpec and practicing tests are also provided.
TDD benefits
Clean Design
Fast Feedback
Concrete Evidence That Your Software Works
Write Better Code
Reduced Gold-Plating
Regression Test Suite
How To Do TDD
Analyze the requirements and write the list of tasks or features
Pick a task or feature
Brainstorm a list of tests for the task or feature
Review the tests list and pick a test
Write the test case
Run the test case and see it fails to compile
Write only enough code that the test case compiles
Run the test and see running the code fails
Write only enough code to just pass the test
Refactor the production code and eliminate duplication
Repeat
Test-driven development is generally regarded as a good move: it should result in simple decoupled design, your tests tend to cover behaviour not methods, and far fewer bugs. However, just getting unit tests in on a real, commercial project is hard - switching to TDD is even harder. Often you can start a project with good intentions and coverage, then the deadline looms and the tests go out then the hacks come in. So, instead of beating ourselves up about not being perfect let's look at an interative approach to adopting TDD principles. We'll look at tactics for selling TDD to your client, boss and colleagues. This talk will also cover methods for making TDD easier for you by showing you what tools you can use to integrate it into your development environment. In the project itself, we'll examine how we can make small but permanent steps towards full TDD, without losing that progress when deadlines hit. We'll also cover a few methods for learning on your own time and how the whole process can actually be made quite enjoyable.
The Google Test Automation Conference (GTAC) is an annual test automation conference hosted by Google. 2016 is 10th GTAC. I'll share the most impressive parts of experience sharing & tool I heard in GTAC 2016 in this slide.
The document discusses challenges with the traditional waterfall process and separating testing from development in Agile. It advocates for a whole team approach where testers and developers collaborate throughout the sprint. Specification workshops are recommended to develop shared understanding. Automation and living documentation are presented as ways to prevent bugs. Quality is defined by how the software performs for users rather than bug counts. Measuring what matters to the business, rather than low level risks, is advised.
Agile Software Development for Non-Developershamvocke
A Crash Course Introduction into the world of Agile Software Development for people with a sparse or non-existent background in Software Development.
I held this presentation as a Brownbag session at ThoughtWorks Hamburg. The TDD part included a live coding session and the part about Continuous Integration and Continuous Delivery was backed with an example of a real Continuous Integration Server that worked on the results from the TDD live coding session.
This document discusses test driven development (TDD). It begins by explaining the basic TDD process of writing a failing test, getting it to compile, making it pass without changing existing code, and then refactoring. It outlines some benefits of TDD like improved code quality and confidence in changes. It also notes some challenges like additional overhead and keeping test code clean. Overall, it argues that while TDD requires proper implementation, it can help produce higher quality code with fewer bugs.
This document discusses refactoring code through careful modifications that do not change functionality. It emphasizes that refactoring requires rigorous unit testing to be done correctly. Successful refactoring can be achieved through uninterrupted work, pair programming, or test-driven development with an automated testing framework. Tests should be written early and often to catch errors introduced during refactoring. The minimum requirement for testing is assert statements, which provide an easy way to start testing without complex tools. Overall, the document stresses that refactoring is best approached as a disciplined process guided by thorough automated testing.
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]Agile đây Vietnam
Stanly Lau is an agile coach and software developer based in Singapore who has worked with companies of various sizes in industries such as insurance, mobile safety, education, logistics, and banking. The document discusses legacy code and provides tips on how to deal with it. Legacy code is defined as code without unit tests that is difficult to change and prone to bugs. It recommends adopting modern engineering practices like test-driven development and refactoring. It also outlines an approach for identifying change points, breaking dependencies, writing tests, and then making changes to legacy code in a safe manner.
Introduction to Continuous Integration. Combining with Acceptance Test Driven Development, Test Driven Development, Showing how a developer in agile team does the work.
This document provides an introduction to test-driven development (TDD), including its goals, benefits, and challenges. TDD is an iterative, test-first approach to development where functionality and behavior are defined by tests. Tests are written before code and define the desired API and design. Benefits of TDD include reduced defects, increased initial development time, and easier refactoring and collaboration. Adopting TDD requires practice and a focus on good design principles like separation of concerns.
Test-drevet utvikling er en hellig gral innen smidig utvikling og ofte hører man uttrykk som "TDD fører til bra design", "med TDD trenger man ikke tenke på arkitektur" og "TDD er meningen med livet" (okei, det siste der fant jeg muligens på selv). Men vil TDD automatisk føre til bra design? Eller er det noe de ikke har fortalt deg?
This document discusses Error Driven Development (EDD) as an alternative to traditional Test Driven Development (TDD). EDD emphasizes reproducing bugs through tests before fixing them. It addresses common reasons teams avoid TDD, such as not making mistakes or tests taking too long, by arguing bugs will still occur and fixing them without tests is not faster. EDD aims to have teams focus on bugs by learning to reproduce them in tests in order to fix issues and avoid regressions.
Lập trình hướng kiểm thử - Test Driven developmentAnh Lê
This document discusses test driven development (TDD). It begins with an overview of TDD, explaining that TDD is a strong methodology that helps prevent bugs regardless of programming language. It then explains how to implement TDD using the "red/green/refactor" process in incremental baby steps. An example of reversing the last two characters of a string is provided. Benefits of TDD include clean code, preventing bugs, serving as documentation, and helping programmers design better. Common mistakes in TDD are also discussed. The document concludes with questions and answers about TDD.
This document discusses test-driven development (TDD) practices. It covers the characteristics of good tests, what TDD is and why it is used, the TDD development cycle of red-green-refactor, best practices for TDD, anti-patterns to avoid, and practices for writing testable code. The key aspects of TDD outlined are writing tests before code, running tests after each small code change, and refactoring code between test cycles.
The document discusses several important topics for software development including unit testing, clean coding principles, design patterns, and useful development tools. It emphasizes that tests are important for preventing bugs and should be included in all projects. Clean coding principles like DRY, KISS and SRP help produce code that is easier to read, change and maintain. Design patterns provide solutions to common problems and a shared vocabulary for developers. Useful tools include IDEs, version control systems, code analysis tools and text editors which can help programmers work more efficiently if used properly.
The document discusses test-driven development (TDD) and refactoring. It explains what TDD is, how to implement it in three steps - writing a failing test, making the test pass, and refactoring code - and provides an example of modeling a calendar to track holidays using TDD. The document also discusses benefits of TDD like catching mistakes early, increasing coding confidence, and making it easier to implement new requirements through refactoring.
The document introduces the Guildford Coding Dojo, which is a place for learning coding skills through deliberate practice, pair programming, and test-driven development (TDD). Attendees work on problems like FizzBuzz in timed pomodoro cycles, writing automated tests first before coding solutions and refactoring code with a focus on simple design. Rules include no distractions, practicing TDD and pair programming, and producing code that is well-tested, clear, and avoids duplication.
This document discusses test-driven development (TDD) and its importance for software development. It notes that TDD is not just about unit testing code, but is a key part of software craftsmanship. When practicing TDD, tests should be written from the perspective of understanding by business analysts and customers, not just for code implementation. TDD promotes a short feedback loop to continually refine code through testing. Examples provided demonstrate how to use TDD for a FizzBuzz coding exercise by first writing tests to define requirements and then coding to pass those tests.
TDD BDD PHP - Sviluppo guidato dai test in PHP con phpspecPatrick Luca Fazzi
Phpspec è uno strumento che può aiutarci a scrivere codice pulito e funzionante facilitandoci nell'adottare delle pratiche di Behaviour-Driven Development (BDD). Ma cos’è il BDD? Qual è la differenza tra il BDD e il Test-Driven Development (TDD)? Quali sono le differenze tra le famiglie di tool xSpec e xUnit? Quali strumenti mette a disposizione l’ecosistema PHP per praticare il TDD?
Pair programming and introduction to TDDArati Joshi
These are slides used in a workshop on TDD. Slides explain more about different types of pair programming techniques when to use each, what is TDD and how to start thinking about TDD as mindset change.
The document introduces test-driven development (TDD) and provides an overview of its key concepts and practices. TDD combines test-first development and refactoring, using automated tests as a design tool. It describes the basic TDD cycle of writing a failing test, making it pass with the minimum code, and refactoring. Benefits include breaking work into small chunks, avoiding over-engineering, and encouraging loose coupling. Techniques like fake it till you make it and triangulation are presented, along with examples of practicing TDD on a FizzBuzz kata. The importance of practice and learning from experience is emphasized.
TDD - Unit testing done right and programmer happinessErez Cohen
Test Driven Development has been around for a while but it has been dismissed by many as a superfluous and tedious way of developing software.
I have discovered through experience that it helps me create better quality code while turning the development into an even more enjoyable process.
In this talk I explain what makes it so great, tackle some of the criticism and share some tips regarding better unit testing.
The document describes a Global Day of CodeRetreat event taking place in Munich on November 18, 2017. The event involves 2000 developers from 100 cities and 6 continents pairing up to work through 6 sessions of test-driven development (TDD) exercises over 1 day using 1 kata (problem). Each session involves switching pairing partners and introduces constraints to challenge participants, such as writing tests first, continuous integration/refactoring, object-oriented principles, and functional programming techniques. The goal is for developers to learn and improve their TDD and software design skills in a low-pressure environment away from their day jobs.
This document summarizes a TDD walkthrough for converting times to words. It begins by setting up the necessary files and frameworks. The first test case converts 5:00 to "five o' clock" and fails initially. Code is then written to pass this test. Additional tests are added for other times like 5:30 and 5:15, with code changes to pass each new test while maintaining previous tests. Refactoring removes duplication, leading to cleaner code structure using variables and objects. The walkthrough demonstrates a step-by-step TDD process.
TDD - Test Driven Development - Java JUnit FizzBuzzAlan Richardson
A short example Test Driven Development session where I code FizzBuzz.
FizzBuzz is often used as a programming interview question and as a Kata for practicing your coding.
The GitHub code repository with the Java code for this exercise is available at:
https://github.com/eviltester/fizzbuzz
Read the blog post for the video:
http://blog.eviltester.com/2018/03/tdd-test-driven-development-java-junit.html
JavaScript frontend testing from failure to good to greatPhilipp Fehre
TDD for DOM code is challenging but possible. The presenter demonstrated a simple example of TDD for jQuery code using Jasmine that broke code into small testable modules, isolated dependencies, and allowed for changes with confidence through an integrated CI process and headless test running. Frontend TDD, while difficult, results in code that is better tested and maintained.
San Francisco Software Craftsmanship Meetup
Test Driven Developers Bay Area Meetup
TDD Flow: The Mantra in Action” is a talk + hands-on about the mantra of TDD and its core patterns. Here are some questions for this talk: What is TDD? How to write a good test that fails? How to write code enough to make the test pass? How to remove duplication? How to refactor code? How to create clean code? Is TDD about testing or design? How small should a test be? Should I only write unit tests? Should I estimate TDD? How to use TDD with other agile methods like Scrum, Kanban or BDD? And finally, how to flow in TDD?
Seconda serata di introduzione al Test-Driven Development, tenuta in XPeppers a Trento il 24 Ottobre 2012.
Nelle slide c'è anche la descrizione del coding dojo sullo string calculator che abbiamo svolto assieme.
This document summarizes notes from Kent Beck's book "TDD by Example" on test-driven development (TDD). It outlines the core principles of TDD, including writing tests first before code and eliminating duplication. It also describes techniques like red-green-refactor cycles where tests are written to fail initially ("red"), made to pass ("green"), and then code is refactored. The document provides examples of applying TDD to a money conversion problem and discusses patterns for testing, refactoring, and overcoming fears that arise during the process.
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
The document discusses test-driven development (TDD) and simple design. It introduces TDD and some of its core practices, including test-driven development, simple design, refactoring, and pair programming. It provides an agenda for a workshop that will cover these topics over three sessions, including extreme programming (XP), the four elements of simple design, test doubles, outside-in TDD, and SOLID principles. The workshop aims to communicate best practices for using technical practices to succeed with agile development.
This document discusses pair programming and provides guidance on how to effectively implement it. It begins by explaining the purpose of pair programming is to produce high quality software. It then discusses various pairing techniques like ping-pong pairing and mob programming. The document also identifies benefits like higher quality code and faster defect removal, as well as challenges like being tiring. Finally, it provides tips for making pairing work well such as starting with a defined task, switching roles frequently, and not forcing people who strongly dislike pairing.
The document introduces Test Driven Development (TDD). TDD is a software development process that relies on short development cycles where you write an automated test first, then code to pass that test, and refactor as needed. The key benefits of TDD are that it encourages simple design, validates correctness, and drives the design of a program in a modular way. TDD best practices include writing self-explanatory test assertions, keeping tests small and isolated, integrating code frequently, and following the TDD mantra and rhythm of red-green-refactor.
Desarrollando a velocidad de crucero - CAS 2018Codium
Los proyectos suelen empezar con un ritmo de desarrollo muy rápido. A medida que maduran van perdiendo velocidad hasta que llega a un punto en que el coste y tiempo de añadir funcionalidad es extremadamente elevado.
En esta charla @luisrovirosa nos habla, desde un punto de vista técnico, cómo podemos diseñar y desarrollar el producto para aportar valor al final de cada sprint. Para ello muestra ejemplos de cómo hemos simplificado un producto y las prácticas que hemos utilizado para mantener la velocidad de desarrollo y la deuda técnica bajo control. También hablaremos del coste de cada una de ellas.
Algunas de las técnicas son el vertical slicing, simplificar, test driven development, refactoring y automatización de la infraestructura.
Learned lessons in real world projects by Jordi Anguela at Mallorca Software ...Codium
En esta charla hablé de:
- cómo gestionamos un nuevo proyecto,
- automatizamos el setup con Docker,
- utilizamos los pipelines de Bitbucket para ejecutar los tests automáticamente
- de cómo encapsulamos el dominio del proyecto con DDD.
- y garantizamos la calidad y el correcto funcionamiento con TDD,
La charla se enfoca desde un punto práctico, con ejemplos y mostrando aquellas partes que más problemas nos han dado y las soluciones que planteamos.
Charla impartida en @scmallorca: https://www.meetup.com/Mallorca-Software-Craftsmanship/events/247679413/
Learned lessons in a real world project by Luis Rovirosa at PHPMadCodium
En esta charla hablé de:
- cómo gestionamos un nuevo proyecto,
- automatizamos el setup con Docker,
- utilizamos los pipelines de Bitbucket para ejecutar los tests automáticamente
- de cómo encapsulamos el dominio del proyecto con DDD.
- y garantizamos la calidad y el correcto funcionamiento con TDD,
La charla se enfoca desde un punto práctico, con ejemplos y mostrando aquellas partes que más problemas nos han dado y las soluciones que planteamos.
Charla impartida en @phpmad en https://www.meetup.com/es-ES/PHPMad/events/246861723/
This document summarizes lessons learned from a 2-month project with 2 part-time developers. It discusses automating infrastructure with Docker and Docker Compose, ensuring quality with testing practices like TDD and acceptance tests, and keeping the domain model at the heart of the project using DDD principles. Automation provides easy setup and updates but must be double checked. TDD allows for refactoring and simplifies code. DDD simplifies communication but increases complexity. Going deeper requires a focus on software craftsmanship.
Vivimos en una sociedad acelerada, donde las rutinas y la inercia del día a día hacen que no seamos dueños de nuestras vidas.
Aunque no acabemos de estar satisfechos con nuestro trabajo, el miedo al cambio, al rechazo y al fracaso hacen que no tomemos ninguna acción para mejorar nuestra situación.
Ir más lentos, aprender a decir a ‘no’ y deshacernos de lo que no nos aporta nos ha permitido disfrutar con nuestra profesión, tener claro nuestras prioridades, compaginar la vida profesional con la personal, conseguir mejores clientes y desarrollar proyectos de forma sostenible.
En esta charla compartiremos cómo hemos ralentizado nuestro ritmo para ser más conscientes de nuestras necesidades, tomar mejores decisiones y ser felices.
Charla impartida en Software Craftsmanship Barcelona 2017
🏎️Tech Transformation: DevOps Insights from the Experts 👩💻campbellclarkson
Connect with fellow Trailblazers, learn from industry experts Glenda Thomson (Salesforce, Principal Technical Architect) and Will Dinn (Judo Bank, Salesforce Development Lead), and discover how to harness DevOps tools with Salesforce.
Building API data products on top of your real-time data infrastructureconfluent
This talk and live demonstration will examine how Confluent and Gravitee.io integrate to unlock value from streaming data through API products.
You will learn how data owners and API providers can document, secure data products on top of Confluent brokers, including schema validation, topic routing and message filtering.
You will also see how data and API consumers can discover and subscribe to products in a developer portal, as well as how they can integrate with Confluent topics through protocols like REST, Websockets, Server-sent Events and Webhooks.
Whether you want to monetize your real-time data, enable new integrations with partners, or provide self-service access to topics through various protocols, this webinar is for you!
In this infographic, we have explored cost-effective strategies for iOS app development, focusing on building high-quality apps within a budget. Key points covered include prioritizing essential features, leveraging existing tools and libraries, adopting cross-platform development approaches, optimizing for a Minimum Viable Product (MVP), and integrating with cloud services and third-party APIs. By implementing these strategies, businesses and developers can create functional and engaging iOS apps while minimizing development costs and time-to-market.
Ensuring Efficiency and Speed with Practical Solutions for Clinical OperationsOnePlan Solutions
Clinical operations professionals encounter unique challenges. Balancing regulatory requirements, tight timelines, and the need for cross-functional collaboration can create significant internal pressures. Our upcoming webinar will introduce key strategies and tools to streamline and enhance clinical development processes, helping you overcome these challenges.
The Comprehensive Guide to Validating Audio-Visual Performances.pdfkalichargn70th171
Ensuring the optimal performance of your audio-visual (AV) equipment is crucial for delivering exceptional experiences. AV performance validation is a critical process that verifies the quality and functionality of your AV setup. Whether you're a content creator, a business conducting webinars, or a homeowner creating a home theater, validating your AV performance is essential.
How GenAI Can Improve Supplier Performance Management.pdfZycus
Data Collection and Analysis with GenAI enables organizations to gather, analyze, and visualize vast amounts of supplier data, identifying key performance indicators and trends. Predictive analytics forecast future supplier performance, mitigating risks and seizing opportunities. Supplier segmentation allows for tailored management strategies, optimizing resource allocation. Automated scorecards and reporting provide real-time insights, enhancing transparency and tracking progress. Collaboration is fostered through GenAI-powered platforms, driving continuous improvement. NLP analyzes unstructured feedback, uncovering deeper insights into supplier relationships. Simulation and scenario planning tools anticipate supply chain disruptions, supporting informed decision-making. Integration with existing systems enhances data accuracy and consistency. McKinsey estimates GenAI could deliver $2.6 trillion to $4.4 trillion in economic benefits annually across industries, revolutionizing procurement processes and delivering significant ROI.
Software Test Automation - A Comprehensive Guide on Automated Testing.pdfkalichargn70th171
Moving to a more digitally focused era, the importance of software is rapidly increasing. Software tools are crucial for upgrading life standards, enhancing business prospects, and making a smart world. The smooth and fail-proof functioning of the software is very critical, as a large number of people are dependent on them.
Implementing Odoo, a robust and all-inclusive business management software, can significantly improve your organisation. To get the most out of it and ensure a smooth implementation, it is important to have a strategic plan. This blog shares some essential tips to help you with successful Odoo ERP implementation. From planning and customisation to training and support, this blog outlines some expert advice that will guide you through the process confidently. It is true that adopting a new software can be challenging, and hence, this post has tailored these tips to help you avoid common mistakes and achieve the best results. Whether you run a small business or a large enterprise, these tips will help you streamline operations, boost productivity, and drive growth. Whether you are new to Odoo or looking to improve your current setup, it is essential to learn the key strategies for a successful Odoo implementation. Implementing Odoo doesn’t have to be difficult. With the right approach and guidance, you can use this software to elevate your business. Read on to discover the secrets of a successful Odoo implementation.
Why is successful Odoo implementation crucial?
Implementing Odoo effectively can transform your business by making processes smoother, increasing efficiency, and providing useful insights. It helps align your operations with best practices, boosting productivity and aiding better decision-making. A well-executed implementation ensures you get the most out of your investment, while a poor one can cause disruptions, higher costs, and frustration among employees.
Just like life, our code must adapt to the ever changing world we live in. From one day coding for the web, to the next for our tablets or APIs or for running serverless applications. Multi-runtime development is the future of coding, the future is to be dynamic. Let us introduce you to BoxLang.
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
Strengthening Web Development with CommandBox 6: Seamless Transition and Scal...Ortus Solutions, Corp
Join us for a session exploring CommandBox 6’s smooth website transition and efficient deployment. CommandBox revolutionizes web development, simplifying tasks across Linux, Windows, and Mac platforms. Gain insights and practical tips to enhance your development workflow.
Come join us for an enlightening session where we delve into the smooth transition of current websites and the efficient deployment of new ones using CommandBox 6. CommandBox has revolutionized web development, consistently introducing user-friendly enhancements that catalyze progress in the field. During this presentation, we’ll explore CommandBox’s rich history and showcase its unmatched capabilities within the realm of ColdFusion, covering both major variations.
The journey of CommandBox has been one of continuous innovation, constantly pushing boundaries to simplify and optimize development processes. Regardless of whether you’re working on Linux, Windows, or Mac platforms, CommandBox empowers developers to streamline tasks with unparalleled ease.
In our session, we’ll illustrate the simple process of transitioning existing websites to CommandBox 6, highlighting its intuitive features and seamless integration. Moreover, we’ll unveil the potential for effortlessly deploying multiple websites, demonstrating CommandBox’s versatility and adaptability.
Join us on this journey through the evolution of web development, guided by the transformative power of CommandBox 6. Gain invaluable insights, practical tips, and firsthand experiences that will enhance your development workflow and embolden your projects.
Hands-on with Apache Druid: Installation & Data Ingestion StepsservicesNitor
Supercharge your analytics workflow with https://bityl.co/Qcuk Apache Druid's real-time capabilities and seamless Kafka integration. Learn about it in just 14 steps.
Nashik's top web development company, Upturn India Technologies, crafts innovative digital solutions for your success. Partner with us and achieve your goals
Enhanced Screen Flows UI/UX using SLDS with Tom KittPeter Caitens
Join us for an engaging session led by Flow Champion, Tom Kitt. This session will dive into a technique of enhancing the user interfaces and user experiences within Screen Flows using the Salesforce Lightning Design System (SLDS). This technique uses Native functionality, with No Apex Code, No Custom Components and No Managed Packages required.
22. Kata FizzBuzz
Write a program that returns the numbers from 1 to 100.
But for multiples of three returns "Fizz" instead of the
number.
For the multiples of five returns "Buzz".
For the multiples of fifteen returns "FizzBuzz".
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
... etc
up to 100
24. Kata FizzBuzz
Write a program that returns the numbers from 1 to 100.
But for multiples of three returns "Fizz" instead of the
number.
For the multiples of five returns "Buzz".
For the multiples of fifteen returns "FizzBuzz".
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
... etc
up to 100
A number is Fizz if it has a 3 in it
A number is Buzz if it has a 5 in it
A number is FizzBuzz if
it has a 3 in it
it has a 5 in it
The previous requirements are still correct.
27. How to transition into TDD
TDD slows you down at the beginning
Don’t get stuck writing tests
Start writing 1 test (at least) per feature
Applying TDD to legacy code is hard
Refactor carefully
Apply TDD only the new parts of code
Choose a project that doesn’t have a short deadline
Hire knowledge