End-to-end testing with Cypress series: 03 Real-world tests
- Publish Date
- Authors
- Jeremy Fairbank
- Location
- Maui, HI, USA
Transcript
In this video, learn about the kinds of end-to-end tests that are most valuable to write with Cypress. After watching this video, you will know which scenarios to test in your application and how to structure end-to-end tests to improve test suite performance.
You will learn:
- what real-world, happy path tests are
- what unhappy path tests are
- why end-to-end tests should cover realistic, happy path scenarios and align with business requirements
- how testing every scenario in your application can hurt test suite performance and maintainability
Image Attributions:
- https://pixabay.com/vectors/tag-badge-logo-medal-tape-763169/
- https://pixabay.com/vectors/pixel-cells-pixel-social-network-3704049/
- https://pixabay.com/vectors/pixel-pixel-cells-away-landscape-3699343/
- https://pixabay.com/illustrations/caricature-painting-fantasy-5266197/
- https://pixabay.com/vectors/pixel-cells-emotion-confused-6230199/
- https://pixabay.com/vectors/pixel-cells-seminar-conference-3974170/
- https://pixabay.com/vectors/pixel-cells-help-assistance-3974184/
- 00:00
- (happy music)
- 00:03
- Welcome back to Test Double's intro course
- 00:06
- on End-to-end Testing with Cypress.
- 00:09
- In the last video, you installed Cypress,
- 00:12
- initialized a test suite, and wrote your first test.
- 00:16
- Before diving deeper into testing with Cypress,
- 00:19
- you will learn more about the kinds of tests
- 00:21
- that are valuable to write with Cypress.
- 00:23
- In this video, you will:
- 00:25
- learn what real-world, happy path tests are,
- 00:29
- learn what unhappy path tests are,
- 00:31
- learn the importance of writing business-valuable tests,
- 00:35
- and learn how the number of end-to-end tests
- 00:38
- impacts test suite speed and maintenance.
- 00:41
- Let's get started.
- 00:43
- So, what is a real-world happy path test?
- 00:46
- Let's explore each of those concepts.
- 00:49
- In the context of end-to-end testing,
- 00:51
- real-world test is a phrase I use to describe a test
- 00:55
- that mimics the flow a real user
- 00:57
- would take with an application.
- 00:59
- For example, on a web app for booking flights,
- 01:03
- a real-world test could be searching
- 01:05
- for round trip tickets given travel dates,
- 01:08
- selecting a flight from the available options,
- 01:11
- choosing airplane seats,
- 01:13
- providing traveler information, and confirming the booking.
- 01:17
- Those are all steps a real user would take,
- 01:20
- so you would include all of those steps in a single test.
- 01:24
- That may sound counterintuitive if you're more familiar
- 01:27
- with unit tests where you typically handle
- 01:29
- multiple test cases, each with a single assertion.
- 01:33
- End-to-end tests are sometimes known as feature tests
- 01:36
- because they usually run through a feature
- 01:38
- that is driven by business requirements.
- 01:41
- In other words, end-to-end tests should ideally align
- 01:44
- with business requirements to verify a software team
- 01:47
- is building what is being asked for.
- 01:50
- Another reason for putting so many steps
- 01:52
- in one test is speed.
- 01:54
- Remember, from the first video, that, typically,
- 01:57
- end-to-end tests are slow because they involve
- 01:59
- the full software stack and drive a real browser.
- 02:03
- If you break up an end-to-end test
- 02:05
- into multiple smaller tests, you multiply the high cost
- 02:09
- of data setup, running through the whole stack,
- 02:12
- and driving the browser for each test.
- 02:15
- Returning back to our beginning definition,
- 02:17
- these tests are usually also happy path tests.
- 02:21
- A happy path test is a real-world test
- 02:24
- that mimics the ideal or best case user scenario.
- 02:28
- Our previous flight booking example is a happy path test.
- 02:32
- The user in the test successfully books a flight
- 02:35
- with no issues during any of the steps.
- 02:38
- An example of an unhappy path
- 02:40
- would test that one or more of the steps fail
- 02:43
- and would ensure that an appropriate error message
- 02:46
- or recovery path is presented to the user.
- 02:49
- Although it's valuable to know your application
- 02:51
- handles exceptions appropriately,
- 02:54
- if you try to test all failure scenarios
- 02:57
- you will drastically slow down
- 02:58
- what is already a slow test suite.
- 03:01
- Also, recall that end-to-end tests are harder to debug
- 03:04
- because there are more points in the stack
- 03:06
- that could cause your test to fail unexpectedly.
- 03:09
- The more end-to-end tests you have,
- 03:12
- the harder it will be to maintain them
- 03:13
- if you encounter unexpected failures
- 03:16
- because you're spending time debugging tests.
- 03:19
- We will revisit this in a later video,
- 03:21
- but there are some ways to reduce the cost of speed
- 03:24
- and debugging in order to test expected failure scenarios
- 03:28
- if your team finds those tests valuable.
- 03:30
- Given all those reasons, Test Double generally recommends
- 03:34
- limiting end-to-end tests to the most business-valuable,
- 03:37
- realistic, happy path scenarios in your application.
- 03:41
- Let's recap what you learned in this video.
- 03:44
- You learned what real-world happy path tests are,
- 03:48
- what unhappy path tests are,
- 03:50
- the importance of writing business-valuable tests,
- 03:54
- and how the number of end-to-end tests
- 03:56
- impacts test suite speed and maintenance.
- 03:59
- In the next video, you will write a real-world
- 04:01
- happy path test for the yams application
- 04:04
- as well as learn new commands
- 04:06
- and selectors for interacting with forms.
- 04:08
- (happy music)
‹ End-to-end testing with Cypress series: 02 Getting Started
End-to-end testing with Cypress series: 04 Happy path tests ›
Jeremy Fairbank
- Code Name
- Agent 0029
- Location
- Maui, HI