SlideShare ist ein Scribd-Unternehmen logo
1 von 62
UNIT TESTING, TDD & ATDD
Arnon Axelrod, E4D Solutions
©ArnonAxelrod,E4DSolutionsLtd.
ABOUT ME
©ArnonAxelrod,E4DSolutionsLtd.
ABOUT YOU
 Position: Dev, Test, Product, Management, other?
 TDD/Unit testing experience
©ArnonAxelrod,E4DSolutionsLtd.
WHY LEARN TDD TODAY?
Adoption (%
of martket)
time
Today
ATDD
TDD
Agile
Object-
Oriented
©ArnonAxelrod,E4DSolutionsLtd.
Photo by: Stuart Miles
TDD?!
©ArnonAxelrod,E4DSolutionsLtd.
Learning TDD is like learning to ride a bicycle
Quality Testing
Unit
Tests
TDD ATDD
QUALITY THROUGHOUT THE
PROJECT LIFECYCLE
What is quality?
Why it is important?
Quality
©ArnonAxelrod,E4DSolutionsLtd.
QUALITY
No bugs
Stability
Testing
Design
Happy, Loyal customers
User eXperience
Clean code
Maintainability
Customer feedback
©ArnonAxelrod,E4DSolutionsLtd.
THE PRODUCTIVITY MISCONCEPTION
Productivity
Features
Happy customers
MaintainabilityPressure
Legend:
Positive
relationship
Negative
relationship
Increased
Decreased
Productivity
Features
Happy customers
Stability
Clean code
Testing
©ArnonAxelrod,E4DSolutionsLtd.
THE PRODUCTIVITY MISCONCEPTION
Productivity
Features
Happy customers
MaintainabilityPressure
Legend:
Positive
relationship
Negative
relationship
Increased
Decreased
Stability
Clean code
Testing
Quality Testing
Unit
Tests
TDD ATDD
TESTING
Testing
©ArnonAxelrod,E4DSolutionsLtd.
TYPES OF TESTS
Exploratory
Planned
Manual
Automated
White box Black box
©ArnonAxelrod,E4DSolutionsLtd.
TYPES OF TESTS
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
End-to-End
©ArnonAxelrod,E4DSolutionsLtd.
TYPES OF TESTS
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
Usability, UX
©ArnonAxelrod,E4DSolutionsLtd.
TYPES OF TESTS
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
Integration
©ArnonAxelrod,E4DSolutionsLtd.
TYPES OF TESTS
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
Functional
Mock
Mock
Mock
©ArnonAxelrod,E4DSolutionsLtd.
TYPES OF TESTS
UI
View Model
Client Logic
Server Proxy
Service Layer
DAL
ORM
DB
Unit tests
Business Logic
©ArnonAxelrod,E4DSolutionsLtd.
TYPES OF TESTS
Other:
 Performance
 Load (scalability)
 Install (deployment)
 Monkey testing
Quality Testing
Unit
Tests
TDD ATDD
UNIT TESTS BASICS
Unit
Testing
©ArnonAxelrod,E4DSolutionsLtd.
WHAT’S A UNIT TEST?
 What’s a unit?
 Smallest testable functionality
 any testable functionality (BDD)
 Automatic
 Gray box
©ArnonAxelrod,E4DSolutionsLtd.
BENEFITS OF UNIT TESTS
 Fast
 Easy to write and maintain
 Code coverage
 When fail, provide insight into the problem
©ArnonAxelrod,E4DSolutionsLtd.
UNIT TESTS SHOULD:
 Be Isolated
 Re-runnable
 No side effects
 Cleanup
 Environment agnostic
 Order doesn’t matter
 Verify functionality, not implementation
 Be straight-forward
 No conditionals, loops etc
Photo by: tongdang
©ArnonAxelrod,E4DSolutionsLtd.
UNIT TESTS SHOULD:
 Read like a story
 Verify only one thing
 Have meaningful names
 Be fast!
©ArnonAxelrod,E4DSolutionsLtd.
DOUBLES
(MOCKS)
Order class
+Items
+bool CheckAvailability (IInventory inventory)
+void Supply (IInventory inventory)
Inventory class
+int GetAvailablePieces (Item item)
+void Reduce(Item item, int count)
- DbConnectionProvider
©ArnonAxelrod,E4DSolutionsLtd.
DOUBLES
(MOCKS)
Order class
+Items
+bool CheckAvailability (IInventory inventory)
+void Supply (IInventory inventory)
IInventory interface
+int GetAvailablePieces (Item item)
+void Reduce(Item item, int count)
Inventory class (impl)
+int GetAvailablePieces (Item item)
+void Reduce(Item item, int count)
- DbConnectionProvider
InventoryDouble
+int GetAvailablePieces (Item item)
+void Reduce(Item item, int count)
©ArnonAxelrod,E4DSolutionsLtd.
DOUBLES...
Double
Fake
Dummy
MockStub
Detour
©ArnonAxelrod,E4DSolutionsLtd.
UNIT TEST STRUCTURE
Arrange Act Assert
Given When Then
©ArnonAxelrod,E4DSolutionsLtd.
TEST SUITE
Suite Initialize
Test Initialize
Test Method 1
Test Cleanup
Suite Cleanup
Test Method 2 Test Method 3
Quality Testing
Unit
Tests
TDD ATDDTDD
TDD
©ArnonAxelrod,E4DSolutionsLtd.
WHAT TDD IS ALL ABOUT?
Testing?!
Design!
©ArnonAxelrod,E4DSolutionsLtd.
WHY IT IS IMPORTANT TO TEST FIRST?
 Looking at the problem space
 vs. the solution (implementation) space
 Building decoupled code from base
 Psychological effect
 Testing the test first!
©ArnonAxelrod,E4DSolutionsLtd.
TESTING THE TEST FIRST!
 What are the inputs?
 What are the outputs?
[TestMethod]
public void TestFibonacciFunction()
{
// arrange
...
// Act:
var result = Fibonacci(...);
// Assert:
Assert ...
}
The test we
want to test
©ArnonAxelrod,E4DSolutionsLtd.
TESTING THE TEST FIRST!
public bool TestFibonacciFunction(Func<…> fibonacci)
{
// arrange
...
// Act:
var result = fibonacci(...);
// Assert:
return ...
}
The test we
want to test
public void TestTheTest()
{
var invalidImpl = …
var goodImpl = Fibonacci;
Assert.IsFalse(TestFibonacciFunction(invalidImpl));
Assert.IsTrue(TestFibonacciFunction(goodImpl));
}
Testing the test
©ArnonAxelrod,E4DSolutionsLtd.
THE WAY TDD WORKS:
Write a
failing
test
Write the
code to
make this
test pass
Refactor
©ArnonAxelrod,E4DSolutionsLtd.
Write a
test
New
Test
Old
Tests
Write
production
code
All
Tests
Refactor
All
Tests
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
Photo by: Chaiwat
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
public class SomeClass
{
public SomeClass()
{
//...
}
public void Foo(int someParam)
{
// use someParam...
}
}
Initial state
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
public class SomeClass
{
private int _someParam;
public SomeClass(int someParam)
{
//...
_someParam = someParam;
}
public void Foo()
{
// use _someParam...
}
}
Final (desired)
state
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
public class SomeClass
{
public SomeClass()
{
//...
}
public void Foo(int someParam)
{
// use someParam...
}
}
Initial state
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
public class SomeClass
{
public SomeClass()
{
//...
}
private int _someParam;
public SomeClass(int someParam) : this()
{
_someParam = someParam;
}
public void Foo(int someParam)
{
//use someParam...
}
}
Step1 – Add
constructor
overload
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
public class SomeClass
{
private int _someParam;
public SomeClass(int someParam)
{
//...
_someParam = someParam;
}
public void Foo(int someParam)
{
//use someParam...
}
}
Step2 –
Remove old
constructor
overload
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
public class SomeClass
{
private int _someParam;
public SomeClass(int someParam)
{
//...
_someParam = someParam;
}
public void Foo(int someParam)
{
//use someParam...
}
public void Foo()
{
//use _someParam...
}
}
Step3 – Add
new overload
of Foo
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND REFACTORING
public class SomeClass
{
private int _someParam;
public SomeClass(int someParam)
{
//...
_someParam = someParam;
}
public void Foo()
{
//use _someParam...
}
}
Step4 (final) –
Remove old
overload of
Foo
©ArnonAxelrod,E4DSolutionsLtd.
TDD AND LEGACY CODE
TDD AND LEGACY CODE
Legacy code TDD (loosely-coupled)
©ArnonAxelrod,E4DSolutionsLtd.
LIMITS OF TDD
 UI
 Multi-threading
 Integration with peripheral systems, including:
 Hardware (I/O)
 Operating System
 Database
 3rd party applications and components
Quality Testing
Unit
Tests
TDD ATDD
ATDD
ATDD
©ArnonAxelrod,E4DSolutionsLtd.
ATDD
©ArnonAxelrod,E4DSolutionsLtd.
ATDD
Stands for:
Accepance-Test Driven Development
©ArnonAxelrod,E4DSolutionsLtd.
ATDD
TDD is about writing the CODE RIGHT
ATDD is about writing the RIGHT CODE
©ArnonAxelrod,E4DSolutionsLtd.
ATDD
ATDD is about Communication
Mainly between Product, Dev and Test
©ArnonAxelrod,E4DSolutionsLtd.
ATDD IS AKA:
 Agile Acceptance Testing
 Specification by Example
 Example Driven Development
 Executable Specifications
 ~= BDD (Behavio Driven Development)
©ArnonAxelrod,E4DSolutionsLtd.
PROBLEMS WITH WATERFALL SPECIFICATION
Photo by: Michal Marcol
©ArnonAxelrod,E4DSolutionsLtd.
PROBLEMS WITH AGILE SPECIFICATION
©ArnonAxelrod,E4DSolutionsLtd.
HOW ATDD WORKS?
Specification
by Examples
Scenarios
Acceptance
tests
Quality Testing
Unit
Tests
TDD ATDD
FITNESSE DEMO
ATDD
©ArnonAxelrod,E4DSolutionsLtd.
BENEFITS OF ATDD FOR THE BUSINESS
ANALYST
 Developers will actually read the specifications that
you write
 You will be sure that developers and testers
understand the specifications correctly
 You will be sure that they do not skip parts of the
specification
 You can track development progress easily
 You can easily identify conflicts in business
rules and requirements caused by later change
requests
 You’ll save time on acceptance and smoke testing
Source: Gojko Adzic – Bridging the Communication Gap
©ArnonAxelrod,E4DSolutionsLtd.
BENEFITS OF ATDD FOR THE DEVELOPER
 Most functional gaps and inconsistencies in the
requirements and specifications will be flushed
out before the development starts
 You will be sure that business analysts actually
understand special cases that you want to discuss
with them
 You will have automated tests as targets to help
you focus the development.
 It will be easier to share, hand over and take over
code
 You’ll have a safety net for refactoring, making your
code cleaner [Arnon A.]
Source: Gojko Adzic – Bridging the Communication Gap
©ArnonAxelrod,E4DSolutionsLtd.
BENEFITS OF ATDD FOR THE TESTER
 You can influence the development process and
stop developers from making the same mistakes
over and over
 You will have a much better understanding of the
domain
 You’ll delegate a lot of dull work to developers,
who will collaborate with you on automating the
verifications
Source: Gojko Adzic – Bridging the Communication Gap
©ArnonAxelrod,E4DSolutionsLtd.
BENEFITS OF ATDD FOR THE TESTER
 You can build in quality from the start by raising
concerns about possible problems before the
development starts
 You’ll be able to verify business rules with a touch
of a button
 You will be able to build better relationships with
developers and business people and get their
respect
 You’ll spend less time doing dull work, and more
time exploring “real” bugs and testing non-
functional aspects (e.g. performance, usability, etc).
[Arnon A.]
Source: Gojko Adzic – Bridging the Communication Gap
Quality Testing
Unit
Tests
TDD ATDD
QUESTIONS?
Quality Testing
Unit
Tests
TDD ATDD
THANK YOU!

Weitere ähnliche Inhalte

Was ist angesagt?

Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Zohirul Alam Tiemoon
 

Was ist angesagt? (20)

An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
 
TDD Flow: The Mantra in Action
TDD Flow: The Mantra in ActionTDD Flow: The Mantra in Action
TDD Flow: The Mantra in Action
 
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
 
TDD CrashCourse Part3: TDD Techniques
TDD CrashCourse Part3: TDD TechniquesTDD CrashCourse Part3: TDD Techniques
TDD CrashCourse Part3: TDD Techniques
 
Adopting TDD - by Don McGreal
Adopting TDD - by Don McGrealAdopting TDD - by Don McGreal
Adopting TDD - by Don McGreal
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Embrace Unit Testing
Embrace Unit TestingEmbrace Unit Testing
Embrace Unit Testing
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
 
(automatic) Testing: from business to university and back
(automatic) Testing: from business to university and back(automatic) Testing: from business to university and back
(automatic) Testing: from business to university and back
 
Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214
 
TDD (Test Driven Design)
TDD (Test Driven Design)TDD (Test Driven Design)
TDD (Test Driven Design)
 
TDD and BDD and ATDD
TDD and BDD and ATDDTDD and BDD and ATDD
TDD and BDD and ATDD
 
TDD with Visual Studio 2010
TDD with Visual Studio 2010TDD with Visual Studio 2010
TDD with Visual Studio 2010
 
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed ShreefIntroduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & Where
 
New Ideas for Old Code - Greach
New Ideas for Old Code - GreachNew Ideas for Old Code - Greach
New Ideas for Old Code - Greach
 
ES3-2020-05 Testing
ES3-2020-05 TestingES3-2020-05 Testing
ES3-2020-05 Testing
 
TDD & BDD
TDD & BDDTDD & BDD
TDD & BDD
 
Unit testing with java
Unit testing with javaUnit testing with java
Unit testing with java
 

Ähnlich wie Tdd & clean code

Ähnlich wie Tdd & clean code (20)

Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Oracle Code One ...
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Oracle Code One ...Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Oracle Code One ...
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Oracle Code One ...
 
AOTB2014: Agile Testing on the Java Platform
AOTB2014: Agile Testing on the Java PlatformAOTB2014: Agile Testing on the Java Platform
AOTB2014: Agile Testing on the Java Platform
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
 
A Future where we don’t write tests
A Future where we don’t write testsA Future where we don’t write tests
A Future where we don’t write tests
 
Experts live dtap reinvented, a risk driven approach to release pipelines
Experts live dtap reinvented, a risk driven approach to release pipelinesExperts live dtap reinvented, a risk driven approach to release pipelines
Experts live dtap reinvented, a risk driven approach to release pipelines
 
Crash wars - The handling awakens v3.0
Crash wars - The handling awakens v3.0Crash wars - The handling awakens v3.0
Crash wars - The handling awakens v3.0
 
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
 
Test-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptxTest-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptx
 
Crash wars - The handling awakens
Crash wars - The handling awakensCrash wars - The handling awakens
Crash wars - The handling awakens
 
How to write clean & testable code without losing your mind
How to write clean & testable code without losing your mindHow to write clean & testable code without losing your mind
How to write clean & testable code without losing your mind
 
Testing micro services using testkits
Testing micro services using testkitsTesting micro services using testkits
Testing micro services using testkits
 
Clean Code 2
Clean Code 2Clean Code 2
Clean Code 2
 
Troubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersTroubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineers
 
AngularJs Crash Course
AngularJs Crash CourseAngularJs Crash Course
AngularJs Crash Course
 
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java DevelopersOpen Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
 
Android Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyondAndroid Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyond
 
.NET Coding Standards For The Real World (2012)
.NET Coding Standards For The Real World (2012).NET Coding Standards For The Real World (2012)
.NET Coding Standards For The Real World (2012)
 
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
Testing Vue Apps with Cypress.io (STLJS Meetup April 2018)
 
TDD CrashCourse Part2: TDD
TDD CrashCourse Part2: TDDTDD CrashCourse Part2: TDD
TDD CrashCourse Part2: TDD
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 

Mehr von Eyal Vardi

Mehr von Eyal Vardi (20)

Why magic
Why magicWhy magic
Why magic
 
Smart Contract
Smart ContractSmart Contract
Smart Contract
 
Rachel's grandmother's recipes
Rachel's grandmother's recipesRachel's grandmother's recipes
Rachel's grandmother's recipes
 
Performance Optimization In Angular 2
Performance Optimization In Angular 2Performance Optimization In Angular 2
Performance Optimization In Angular 2
 
Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)
 
Angular 2 NgModule
Angular 2 NgModuleAngular 2 NgModule
Angular 2 NgModule
 
Upgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.xUpgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.x
 
Angular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time CompilationAngular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time Compilation
 
Routing And Navigation
Routing And NavigationRouting And Navigation
Routing And Navigation
 
Angular 2 Architecture
Angular 2 ArchitectureAngular 2 Architecture
Angular 2 Architecture
 
Angular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xAngular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.x
 
Angular 2.0 Views
Angular 2.0 ViewsAngular 2.0 Views
Angular 2.0 Views
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0
 
Template syntax in Angular 2.0
Template syntax in Angular 2.0Template syntax in Angular 2.0
Template syntax in Angular 2.0
 
Http Communication in Angular 2.0
Http Communication in Angular 2.0Http Communication in Angular 2.0
Http Communication in Angular 2.0
 
Angular 2.0 Dependency injection
Angular 2.0 Dependency injectionAngular 2.0 Dependency injection
Angular 2.0 Dependency injection
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and Navigation
 
Async & Parallel in JavaScript
Async & Parallel in JavaScriptAsync & Parallel in JavaScript
Async & Parallel in JavaScript
 
Angular 2.0 Pipes
Angular 2.0 PipesAngular 2.0 Pipes
Angular 2.0 Pipes
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 forms
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Tdd & clean code

Hinweis der Redaktion

  1. תקנים דורשים Unit tests לקוחות לא מקבלים "יש באגים"
  2. המטרה של היום הזה: לענות על שאלות וחששות... תשאלו ותתשתתפו – זה בשבילכם!
  3. גם אני למדתי ככה
  4. להגדיל
  5. להזיז שמאלה את ה-happy customers לחשוב מחדש
  6. להעלות את הכותרות יותר למעלה
  7. קידוד עד הרגע האחרון! אין סטביליזיישן
  8. לשנות צבע של המילה ולמרכז
  9. A container for multiple unit tests
  10. שקף נפרד על Testing the test first
  11. שקף נפרד על Testing the test first
  12. שקף נפרד על Testing the test first
  13. * Refactoring זה בעיקר להוריד כפילויות
  14. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  15. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  16. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  17. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  18. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  19. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  20. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  21. להחליף תמונה TDD provides a safety net Caution: If tests are bad, refactoring can be more difficult than without! On the other hand, TDD drives for good tests Small steps, climbers rule
  22. אין טעם להוסיף טסטים לכל הקוד שכבר כתוב Detours (Moles) יכולים לעזור, וגם Pex
  23. להעביר ATDD לפני Clean code