SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
TEST
정경호
• TDD
• BDD
• Unit test - mocha
• Integration Test - mocha
• Acceptance Test - super test
• End-to-end Test
• Code coverage reports - Istanbul
• Continuous Integration - travis
• Continuous Delivery - AWS CodePipeline, Solano CI
Test Driven Development
개발
TDD
테스트 실패 테스트 성공 리팩토링
반복
Test Driven Development - 장점
• 디버깅 시간의 단축
• 디자인 개선
• 테스트 가능한(Testable) 코드를 작성. Coupling 감소.
• 리팩토링의 용이성
• 테스트 코드 없이 리팩토링을 할 수 있을까?
Test Driven Development - 단점
• TDD 어렵다.
• 지식 습득은 적다. 하지만 TDD를 하기가 매우 어려움. 처음에 막막함을
느낀다. 수영처럼 연습이 많이 필요함.
DEMO
“a + b 를 해주는 객체”
Behavior Driven Development
BDD
테스트 실패 테스트 성공 리팩토링
반복
TDD
테스트 실패 테스트 성공 리팩토링
반복
User story
User story
둘의 프로세스는 같다.
차이점은 User story 의 유무이다.
Behavior Driven Development
Format[edit]
A team at Connextra developed the traditional user-story template in 2001:[4]
"As a <role>, I want <goal/desire> so that <benefit>"
Mike Cohn, a well-known author on user stories, regards the "so that" clause as
optional:[5]
"As a <role>, I want <goal/desire>"
Behavior Driven Development
Story: User logging in
As a user
I want to login with my details
So that I can get access to the site
Scenario: User uses wrong password
Given a username ‘name’
And a password ‘password’
When the user logs in with username and password
Then the login form should be shown again
Behavior Driven Development - 장점
• 비 개발자도 읽을 수 있는 ‘User story’ 기반의 아웃풋
• https://github.com/moltak/node_cucumber_sample
features
step_definition
DEMO
“사용자는 100원을 입금한다. 200원을 얻기 위해.”
TDD/BDD 차이
• Unit (method, function)
• Behavior(기대 행동) user story, scenario
Unit Test
단일 기능 위주의 테스트
Integration Test
서로 다른 시스템을 이용하는 다양한 모듈의 결합된 기능을 테스트
Acceptance Test
Web page, Web browser를 이용한 end user가 사용한다고 생각하고 테
스트. Scenario 검증.
Acceptance Test
Acceptance testing seems to be split into two types:
Standard acceptance testing involves performing tests on the full system (e.g. using your web
page via a web browser) to see whether the application's functionality satisfies the specification.
E.g. "clicking a zoom icon should enlarge the document view by 25%." There is no real
continuum of results, just a pass or fail outcome.
Also, in agile software development, user acceptance testing involves creating tests to mirror the
user stories created by/for the software's customer during development. If the tests pass, it
means the software should meet the customer's requirements and the stories can be considered
complete. An acceptance test suite is basically an executable specification written in a domain
specific language that describes the tests in the language used by the users of the system.
http://stackoverflow.com/questions/4904096/whats-the-difference-between-unit-functional-acceptance-and-integration-test
End-to-end Test
• 모든 테스트 + 시스템 + 배포
• End user가 서비스 제공자가 제공하는 기능을 제대로 사용할 수 있는지
OS, Container 등 모든 것을 테스트. 빌드, 배포, 웹서비스의 경우에는 웹
서버까지
End-to-end Test
End-to-end testing involves ensuring that that integrated components of an application
function as expected. The entire application is tested in a real-world scenario such as
communicating with the database, network, hardware and other applications. 



For example, a simplified end-to-end testing of an email application might involve:
• Logging in to the application
• Accessing the inbox
• Opening and closing the mailbox
• Composing, forwarding or replying to email
• Checking the sent items
• Logging out of the application
http://stackoverflow.com/questions/4904096/whats-the-difference-between-unit-functional-acceptance-and-integration-test
Code Coverage
• 테스트가 코드를 얼마나 커버하였는가 를 나타내는 지표.
• Statement coverage: 실행 코드라인이 한번 이상 실행
• Function coverage: function (or subroutine)이 한번 이상 실행.
• Condition coverage: if 구문이 true/false 모두 실행 되었을 때.
• Branch coverage: 분기 안의 모든 분기나, 모든 결과에 대해 실행되었을
때.
Code Coverage - istanbul
Code Coverage - istanbul
Continuous Integration
Continuous Integration
I’m a project owner I’m project
coding, testing
혼자일때 그냥 대충해도 별로 상관없음
Continuous Integration
I’m a project owner I’m project
coding, testing
다른 사람과 같이 작업하면?
Continuous Integration
I’m a project owner I’m project
coding, testing
사람이 더 많아지면?
Continuous Integration
I’m a project owner I’m project
coding, testing
사람이 더 많아지면?
코드를 어떻게 유지할 것인가?
Continuous Integration
I’m a project owner I’m project
coding, testing
코드의 안정성은 어떻게 지킬 것인가?
사람이 더 많아지면?
코드를 어떻게 유지할 것인가?
“Continuous Integration”
Continuous Integration
I’m a project owner I’m project
coding, testing
Continuous Integration
I’m a project owner I’m project
git push
start
coding, testing
Continuous Integration
I’m a project owner I’m project
CI
git push
git pull
npm test
start
coding, testing
Continuous Integration
I’m a project owner I’m project
CI
git push
git pull
npm test
send notification
start
coding, testing
Continuous Integration
I’m a project owner I’m project
merge
CI
git push
git pull
npm test
send notification
start
Continuous Integration
Continuous Integration
Continuous Integration
“Continuous Integration”
많은 사람과 동시에 작업을 하더라도 안정적으로 코드를 유지할 수 있음.
Continuous Delivery
Continuous Delivery
잘 할 수 있을까?
짧은 출시기간
빠른 배포시간
쉬운 백업, 복구
지속적인 출시
Continuous Delivery
질문! 배포 어떻게 하고 계세요?
“AWS CodePipeline”
Continuous Delivery
git pull
npm test
deploy to staging
deploy to production
DEMO
“Hello code states!”
Q&A

Mais conteúdo relacionado

Mais procurados

Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP WorldIdaf_1er
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices Rajesh Kumar
 
Testing Frameworks
Testing FrameworksTesting Frameworks
Testing FrameworksMoataz Nabil
 
Keyword Driven Testing
Keyword Driven TestingKeyword Driven Testing
Keyword Driven TestingMaveryx
 
When develpment met test(shift left testing)
When develpment met test(shift left testing)When develpment met test(shift left testing)
When develpment met test(shift left testing)SangIn Choung
 
Hudson Continuous Integration for PHP
Hudson Continuous Integration for PHPHudson Continuous Integration for PHP
Hudson Continuous Integration for PHPJeremy Coates
 
Web Application Software Testing
Web Application Software TestingWeb Application Software Testing
Web Application Software TestingAndrew Kandels
 
Automated testing for real
Automated testing for realAutomated testing for real
Automated testing for realMarkko Paas
 
LINE Developer Day 2019 how to optimize bot development lifecycle with dev ops
LINE Developer Day 2019 how to optimize bot development lifecycle with dev opsLINE Developer Day 2019 how to optimize bot development lifecycle with dev ops
LINE Developer Day 2019 how to optimize bot development lifecycle with dev opsKenichiro Nakamura
 
Comparative Analysis Of GoLang Testing Frameworks
Comparative Analysis Of GoLang Testing FrameworksComparative Analysis Of GoLang Testing Frameworks
Comparative Analysis Of GoLang Testing FrameworksDushyant Bhalgami
 
Testing tools in visual studio
Testing tools in visual studioTesting tools in visual studio
Testing tools in visual studioMahdi Esmailoghli
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case StudyIndicThreads
 
Introduction to test automation in java and php
Introduction to test automation in java and phpIntroduction to test automation in java and php
Introduction to test automation in java and phpTho Q Luong Luong
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentJohn Blanco
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven DevelopmentEffectiveUI
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven DevelopmentEffective
 

Mais procurados (20)

Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices
 
Testing Frameworks
Testing FrameworksTesting Frameworks
Testing Frameworks
 
Testembed
TestembedTestembed
Testembed
 
Keyword Driven Testing
Keyword Driven TestingKeyword Driven Testing
Keyword Driven Testing
 
When develpment met test(shift left testing)
When develpment met test(shift left testing)When develpment met test(shift left testing)
When develpment met test(shift left testing)
 
Hudson Continuous Integration for PHP
Hudson Continuous Integration for PHPHudson Continuous Integration for PHP
Hudson Continuous Integration for PHP
 
Web Application Software Testing
Web Application Software TestingWeb Application Software Testing
Web Application Software Testing
 
Automated testing for real
Automated testing for realAutomated testing for real
Automated testing for real
 
LINE Developer Day 2019 how to optimize bot development lifecycle with dev ops
LINE Developer Day 2019 how to optimize bot development lifecycle with dev opsLINE Developer Day 2019 how to optimize bot development lifecycle with dev ops
LINE Developer Day 2019 how to optimize bot development lifecycle with dev ops
 
Comparative Analysis Of GoLang Testing Frameworks
Comparative Analysis Of GoLang Testing FrameworksComparative Analysis Of GoLang Testing Frameworks
Comparative Analysis Of GoLang Testing Frameworks
 
Testing tools in visual studio
Testing tools in visual studioTesting tools in visual studio
Testing tools in visual studio
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Introduction to test automation in java and php
Introduction to test automation in java and phpIntroduction to test automation in java and php
Introduction to test automation in java and php
 
Test Strategy
Test StrategyTest Strategy
Test Strategy
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Test automation within a scrum process
Test automation within a scrum processTest automation within a scrum process
Test automation within a scrum process
 

Destaque

Rx Creating Operators, observeOn, subscribeOn
Rx Creating Operators, observeOn, subscribeOnRx Creating Operators, observeOn, subscribeOn
Rx Creating Operators, observeOn, subscribeOnKyungHo Jung
 
Mockito, Robobinding
Mockito, RobobindingMockito, Robobinding
Mockito, RobobindingKyungHo Jung
 
Kotlin 사용기
Kotlin 사용기Kotlin 사용기
Kotlin 사용기KyungHo Jung
 
Netflix Culture: Freedom & Responsibility 넷플릭스 문화: 자유와 책임 (한국어 번역)
Netflix Culture: Freedom & Responsibility      넷플릭스 문화: 자유와 책임 (한국어 번역)Netflix Culture: Freedom & Responsibility      넷플릭스 문화: 자유와 책임 (한국어 번역)
Netflix Culture: Freedom & Responsibility 넷플릭스 문화: 자유와 책임 (한국어 번역)Hong Nam Yang
 
RxJava in Action
RxJava in ActionRxJava in Action
RxJava in ActionTaeho Kim
 
Subject in RxJava
Subject in RxJavaSubject in RxJava
Subject in RxJava인수 장
 
Windows 7 For Geeks
Windows 7 For GeeksWindows 7 For Geeks
Windows 7 For GeeksAdil Mughal
 
DevNext - Web Programming Concepts Using Asp Net
DevNext - Web Programming Concepts Using Asp NetDevNext - Web Programming Concepts Using Asp Net
DevNext - Web Programming Concepts Using Asp NetAdil Mughal
 
Community Contribution Experience
Community Contribution ExperienceCommunity Contribution Experience
Community Contribution ExperienceAdil Mughal
 
What's New in Visual Studio 2010
What's New in Visual Studio 2010What's New in Visual Studio 2010
What's New in Visual Studio 2010Adil Mughal
 
Code Sharing Between Windows Phone/Store Apps
Code Sharing Between Windows Phone/Store AppsCode Sharing Between Windows Phone/Store Apps
Code Sharing Between Windows Phone/Store AppsAdil Mughal
 
Android Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG FirenzeAndroid Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG FirenzeFabio Collini
 
Testable Android Apps DroidCon Italy 2015
Testable Android Apps DroidCon Italy 2015Testable Android Apps DroidCon Italy 2015
Testable Android Apps DroidCon Italy 2015Fabio Collini
 
Write cleaner, maintainable, and testable code in Android with MVVM
Write cleaner, maintainable, and testable code in Android with MVVMWrite cleaner, maintainable, and testable code in Android with MVVM
Write cleaner, maintainable, and testable code in Android with MVVMAdil Mughal
 
Testable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVMTestable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVMFabio Collini
 
Web Development using ASP.NET MVC at HEC
Web Development using ASP.NET MVC at HECWeb Development using ASP.NET MVC at HEC
Web Development using ASP.NET MVC at HECAdil Mughal
 
Introduction to Retrofit and RxJava
Introduction to Retrofit and RxJavaIntroduction to Retrofit and RxJava
Introduction to Retrofit and RxJavaFabio Collini
 

Destaque (20)

Rx Creating Operators, observeOn, subscribeOn
Rx Creating Operators, observeOn, subscribeOnRx Creating Operators, observeOn, subscribeOn
Rx Creating Operators, observeOn, subscribeOn
 
Mockito, Robobinding
Mockito, RobobindingMockito, Robobinding
Mockito, Robobinding
 
Kotlin 사용기
Kotlin 사용기Kotlin 사용기
Kotlin 사용기
 
Android MVVM TDD
Android MVVM TDDAndroid MVVM TDD
Android MVVM TDD
 
Netflix Culture: Freedom & Responsibility 넷플릭스 문화: 자유와 책임 (한국어 번역)
Netflix Culture: Freedom & Responsibility      넷플릭스 문화: 자유와 책임 (한국어 번역)Netflix Culture: Freedom & Responsibility      넷플릭스 문화: 자유와 책임 (한국어 번역)
Netflix Culture: Freedom & Responsibility 넷플릭스 문화: 자유와 책임 (한국어 번역)
 
RxJava in Action
RxJava in ActionRxJava in Action
RxJava in Action
 
Subject in RxJava
Subject in RxJavaSubject in RxJava
Subject in RxJava
 
Windows 7 For Geeks
Windows 7 For GeeksWindows 7 For Geeks
Windows 7 For Geeks
 
DevNext - Web Programming Concepts Using Asp Net
DevNext - Web Programming Concepts Using Asp NetDevNext - Web Programming Concepts Using Asp Net
DevNext - Web Programming Concepts Using Asp Net
 
Community Contribution Experience
Community Contribution ExperienceCommunity Contribution Experience
Community Contribution Experience
 
What's New in Visual Studio 2010
What's New in Visual Studio 2010What's New in Visual Studio 2010
What's New in Visual Studio 2010
 
Code Sharing Between Windows Phone/Store Apps
Code Sharing Between Windows Phone/Store AppsCode Sharing Between Windows Phone/Store Apps
Code Sharing Between Windows Phone/Store Apps
 
Android Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG FirenzeAndroid Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG Firenze
 
Testable Android Apps DroidCon Italy 2015
Testable Android Apps DroidCon Italy 2015Testable Android Apps DroidCon Italy 2015
Testable Android Apps DroidCon Italy 2015
 
Realm과 RxJava
Realm과 RxJavaRealm과 RxJava
Realm과 RxJava
 
Write cleaner, maintainable, and testable code in Android with MVVM
Write cleaner, maintainable, and testable code in Android with MVVMWrite cleaner, maintainable, and testable code in Android with MVVM
Write cleaner, maintainable, and testable code in Android with MVVM
 
Testable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVMTestable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVM
 
Web Development using ASP.NET MVC at HEC
Web Development using ASP.NET MVC at HECWeb Development using ASP.NET MVC at HEC
Web Development using ASP.NET MVC at HEC
 
PublishSubject
PublishSubjectPublishSubject
PublishSubject
 
Introduction to Retrofit and RxJava
Introduction to Retrofit and RxJavaIntroduction to Retrofit and RxJava
Introduction to Retrofit and RxJava
 

Semelhante a May 05 test_code_states

Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choicetoddbr
 
Dream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workDream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workManuel de la Peña Peña
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4Billie Berzinskas
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by ExampleNalin Goonawardana
 
Increasing Quality with DevOps
Increasing Quality with DevOpsIncreasing Quality with DevOps
Increasing Quality with DevOpsCoveros, Inc.
 
Continous Integration: A Case Study
Continous Integration: A Case StudyContinous Integration: A Case Study
Continous Integration: A Case StudyTalentica Software
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWDVikas Sarin
 
Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps  Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps Chetan Gordhan
 
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test AutomationSTARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test AutomationClever Moe
 
Test Driven Development:Unit Testing, Dependency Injection, Mocking
Test Driven Development:Unit Testing, Dependency Injection, MockingTest Driven Development:Unit Testing, Dependency Injection, Mocking
Test Driven Development:Unit Testing, Dependency Injection, Mockingmrjawright
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0Jasmine Conseil
 
How to scale your Test Automation
How to scale your Test AutomationHow to scale your Test Automation
How to scale your Test AutomationKlaus Salchner
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Clever Moe
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanQA or the Highway
 
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...
Practical DevOps & Continuous Delivery –  A Webinar to learn in depth on DevO...Practical DevOps & Continuous Delivery –  A Webinar to learn in depth on DevO...
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...Hugo Messer
 

Semelhante a May 05 test_code_states (20)

Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choice
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Dream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workDream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to work
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Increasing Quality with DevOps
Increasing Quality with DevOpsIncreasing Quality with DevOps
Increasing Quality with DevOps
 
Agile Testing - What is it?
Agile Testing - What is it?Agile Testing - What is it?
Agile Testing - What is it?
 
Agile Testing
Agile Testing  Agile Testing
Agile Testing
 
Continous Integration: A Case Study
Continous Integration: A Case StudyContinous Integration: A Case Study
Continous Integration: A Case Study
 
TestDrivenDeveloment
TestDrivenDevelomentTestDrivenDeveloment
TestDrivenDeveloment
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWD
 
Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps  Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps
 
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test AutomationSTARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
 
Test Driven Development:Unit Testing, Dependency Injection, Mocking
Test Driven Development:Unit Testing, Dependency Injection, MockingTest Driven Development:Unit Testing, Dependency Injection, Mocking
Test Driven Development:Unit Testing, Dependency Injection, Mocking
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
How to scale your Test Automation
How to scale your Test AutomationHow to scale your Test Automation
How to scale your Test Automation
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
DevOps & DevEx
DevOps & DevExDevOps & DevEx
DevOps & DevEx
 
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...
Practical DevOps & Continuous Delivery –  A Webinar to learn in depth on DevO...Practical DevOps & Continuous Delivery –  A Webinar to learn in depth on DevO...
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...
 

Último

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 

Último (20)

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 

May 05 test_code_states

  • 2. • TDD • BDD • Unit test - mocha • Integration Test - mocha • Acceptance Test - super test • End-to-end Test • Code coverage reports - Istanbul • Continuous Integration - travis • Continuous Delivery - AWS CodePipeline, Solano CI
  • 3. Test Driven Development 개발 TDD 테스트 실패 테스트 성공 리팩토링 반복
  • 4. Test Driven Development - 장점 • 디버깅 시간의 단축 • 디자인 개선 • 테스트 가능한(Testable) 코드를 작성. Coupling 감소. • 리팩토링의 용이성 • 테스트 코드 없이 리팩토링을 할 수 있을까?
  • 5. Test Driven Development - 단점 • TDD 어렵다. • 지식 습득은 적다. 하지만 TDD를 하기가 매우 어려움. 처음에 막막함을 느낀다. 수영처럼 연습이 많이 필요함.
  • 6. DEMO “a + b 를 해주는 객체”
  • 7. Behavior Driven Development BDD 테스트 실패 테스트 성공 리팩토링 반복 TDD 테스트 실패 테스트 성공 리팩토링 반복 User story User story 둘의 프로세스는 같다. 차이점은 User story 의 유무이다.
  • 8. Behavior Driven Development Format[edit] A team at Connextra developed the traditional user-story template in 2001:[4] "As a <role>, I want <goal/desire> so that <benefit>" Mike Cohn, a well-known author on user stories, regards the "so that" clause as optional:[5] "As a <role>, I want <goal/desire>"
  • 9. Behavior Driven Development Story: User logging in As a user I want to login with my details So that I can get access to the site Scenario: User uses wrong password Given a username ‘name’ And a password ‘password’ When the user logs in with username and password Then the login form should be shown again
  • 10. Behavior Driven Development - 장점 • 비 개발자도 읽을 수 있는 ‘User story’ 기반의 아웃풋 • https://github.com/moltak/node_cucumber_sample
  • 12.
  • 13. DEMO “사용자는 100원을 입금한다. 200원을 얻기 위해.”
  • 14. TDD/BDD 차이 • Unit (method, function) • Behavior(기대 행동) user story, scenario
  • 15. Unit Test 단일 기능 위주의 테스트
  • 16. Integration Test 서로 다른 시스템을 이용하는 다양한 모듈의 결합된 기능을 테스트
  • 17. Acceptance Test Web page, Web browser를 이용한 end user가 사용한다고 생각하고 테 스트. Scenario 검증.
  • 18. Acceptance Test Acceptance testing seems to be split into two types: Standard acceptance testing involves performing tests on the full system (e.g. using your web page via a web browser) to see whether the application's functionality satisfies the specification. E.g. "clicking a zoom icon should enlarge the document view by 25%." There is no real continuum of results, just a pass or fail outcome. Also, in agile software development, user acceptance testing involves creating tests to mirror the user stories created by/for the software's customer during development. If the tests pass, it means the software should meet the customer's requirements and the stories can be considered complete. An acceptance test suite is basically an executable specification written in a domain specific language that describes the tests in the language used by the users of the system. http://stackoverflow.com/questions/4904096/whats-the-difference-between-unit-functional-acceptance-and-integration-test
  • 19. End-to-end Test • 모든 테스트 + 시스템 + 배포 • End user가 서비스 제공자가 제공하는 기능을 제대로 사용할 수 있는지 OS, Container 등 모든 것을 테스트. 빌드, 배포, 웹서비스의 경우에는 웹 서버까지
  • 20. End-to-end Test End-to-end testing involves ensuring that that integrated components of an application function as expected. The entire application is tested in a real-world scenario such as communicating with the database, network, hardware and other applications. 
 
 For example, a simplified end-to-end testing of an email application might involve: • Logging in to the application • Accessing the inbox • Opening and closing the mailbox • Composing, forwarding or replying to email • Checking the sent items • Logging out of the application http://stackoverflow.com/questions/4904096/whats-the-difference-between-unit-functional-acceptance-and-integration-test
  • 21. Code Coverage • 테스트가 코드를 얼마나 커버하였는가 를 나타내는 지표. • Statement coverage: 실행 코드라인이 한번 이상 실행 • Function coverage: function (or subroutine)이 한번 이상 실행. • Condition coverage: if 구문이 true/false 모두 실행 되었을 때. • Branch coverage: 분기 안의 모든 분기나, 모든 결과에 대해 실행되었을 때.
  • 22. Code Coverage - istanbul
  • 23. Code Coverage - istanbul
  • 25. Continuous Integration I’m a project owner I’m project coding, testing 혼자일때 그냥 대충해도 별로 상관없음
  • 26. Continuous Integration I’m a project owner I’m project coding, testing 다른 사람과 같이 작업하면?
  • 27. Continuous Integration I’m a project owner I’m project coding, testing 사람이 더 많아지면?
  • 28. Continuous Integration I’m a project owner I’m project coding, testing 사람이 더 많아지면? 코드를 어떻게 유지할 것인가?
  • 29. Continuous Integration I’m a project owner I’m project coding, testing 코드의 안정성은 어떻게 지킬 것인가? 사람이 더 많아지면? 코드를 어떻게 유지할 것인가?
  • 31. Continuous Integration I’m a project owner I’m project coding, testing
  • 32. Continuous Integration I’m a project owner I’m project git push start coding, testing
  • 33. Continuous Integration I’m a project owner I’m project CI git push git pull npm test start coding, testing
  • 34. Continuous Integration I’m a project owner I’m project CI git push git pull npm test send notification start coding, testing
  • 35. Continuous Integration I’m a project owner I’m project merge CI git push git pull npm test send notification start
  • 39. “Continuous Integration” 많은 사람과 동시에 작업을 하더라도 안정적으로 코드를 유지할 수 있음.
  • 41. Continuous Delivery 잘 할 수 있을까? 짧은 출시기간 빠른 배포시간 쉬운 백업, 복구 지속적인 출시
  • 42. Continuous Delivery 질문! 배포 어떻게 하고 계세요?
  • 44. Continuous Delivery git pull npm test deploy to staging deploy to production
  • 46. Q&A