integration testing: you keep using that word, i do not ... · •unit testing: jasmine,...

23
Integration Testing: You Keep Using That Word, I Do Not Think It Means What You Think It Means Melissa Marshall @mveritym

Upload: others

Post on 29-Jun-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Integration Testing: You Keep Using That Word, I Do Not Think

It Means What You Think It Means

Melissa Marshall

@mveritym

Page 2: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Case study

Picture from www.red-badger.com

Page 3: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Source: Unknown via Giphy

Page 4: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Source: wendydoodles.tumblr.com via Gip

Page 5: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration
Page 6: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

What is integration testing?

• Unit testing: Jasmine, JUnit,OCUnit, RSpec …• Functional testing: Protractor, Cucumber, Selenium …

• Integration testing: ???

Page 7: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Integration testing is controversial & confusing used less often

Page 8: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

There is no such thing as “integration testing”.

Page 9: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

What you call “integration testing” depends on your tech and what you’re building.

Page 10: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Example: group functions together, test them in aggregate

Page 11: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Example: test the boundaries of your applications

Page 12: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Example: use declarative UI or functional programming tools

Page 13: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Real World Example: testing a ReactJS app

• General idea: put state in, get DOM out

Diagram: “Virtuelles DOM mit React.js” by Marcin Skirzynski

Page 14: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

ReactJS

Page 15: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Enzyme

• Testing framework Enzyme has full DOM rendering• Render React component with initial state, inspect the DOM that’s

generated

<Header />Props DOM

Page 16: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration
Page 17: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration
Page 18: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

… a deterministic integration test!

• Testing a page without firing up phantomjs or using webdriver

• Generate test states from real scenarios

• FP type systems are reliable and deterministic.

Page 19: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

The Zen of Testing

Source: EmojiIsland

Page 20: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration
Page 21: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Integration testing might not be the right thing for your team and that’s totally OK.

Page 22: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Summary

• Integration testing is useful!

• … but you need to figure out what you want from it

• Don’t get too attached to tests

• Declarative UIs and functional programming are awesome

Page 23: Integration Testing: You Keep Using That Word, I Do Not ... · •Unit testing: Jasmine, JUnit,OCUnit, RSpec … •Functional testing: Protractor, Cucumber, ... a deterministic integration

Thank You!@mveritym