Week 5 - Software Delivery and Testing Flashcards

1
Q

What are the four releases of traditional product delivery?

A

The alpha release

The beta release

The release candidate

The release

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the three environments used by modern feature delivery?

A

The development environment

The staging environment

The production environment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What does the development environment do?

A

The development environment is the shared server where the feature is developed

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What does the staging environment do?

A

The staging environment is where the feature is set up in a mirror of production environment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What does the production environment do?

A

The production environment is where the feature becomes available to the world.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the 8 Principles of Software Delivery

A
  1. Create a repeatable process
  2. Automate almost everything
  3. Version control for everything
  4. If it hurts, do it more frequently
  5. Build quality in
  6. Done means released
  7. Everyone is responsible
  8. Continuous improvement
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What does the “create a repeatable process” software delivery principle mean?

A

Releasing software should be easy, because it has been done a thousand times before

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What does the “automate almost everything” software delivery principle mean?

A

The build should be a push button operation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What does the “version control for everything” software delivery principle mean?

A

Everything you need to build, deploy, test and release your software should be kept in versioned storage

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What does the “if it hurts, do it more frequently” software delivery principle mean?

A

If the build is painful, do it on every check-in

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What does the “build quality in” software delivery principle mean?

A

Defects are fixed as soon as they are found

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What does the “done means released” software delivery principle mean?

A

A feature is only considered “done” once it is in production

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What does the “everyone is responsible” software delivery principle mean?

A

At a glance, the status of the build is visible to everyone

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What does the “continuous improvement” software delivery principle mean?

A

Teams should reflect on what has gone well, what has gone badly, and discuss how to improve (retrospectives)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is shift left testing?

A

Beginning testing as early as practical in the lifecycle

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What does the test pyramid describe?

A

Tests carried out in development

17
Q

What are the three points of the test pyramid?

A

Unit tests, service tests, end-to-end tests

18
Q

What is a unit test and how and when are they run?

A

Unit tests are tests on functions in code

Before the code for a function is accepted into the development environment, its unit tests are run to test it works properly

There might be thousands of unit tests, performed in seconds by testing frameworks

19
Q

What is a service test and how and when are they run?

A

They test if services work

Before the code for an individual microservice is accepted into the staging environment, its service tests are run to test it works properly

Overall, there might be hundreds of service tests, performed in a few minutes by scripts, stubbing out collaborating services

20
Q

What are end-to-end tests and how and when are they run?

A

Tests of the full customer experience

Before the code for a system of microservices is accepted into the production environment, its end-to-end tests are run to test it works properly

Overall, there may be tens of end-to-end tests, performed in several minutes by mimicking user interaction, often through a GUI

21
Q

What is a common anti-pattern to the testing pyramid?

A

The test snow cone

22
Q

What is the test snow cone?

A

All coverage is end-to-end tests

23
Q

What does the test snow cone lead to?

A

Slow test runs and long feedback cycles

24
Q

What is an anti-pattern?

A

Something you shouldn’t do (the opposite of a design pattern)

25
Q

The term “integration test” should be avoided. What does it commonly mean?

A

Some modules will work together properly OR an entire system of modules will work together properly

26
Q

What are the two ways to implement a service test?

A

Stubbing and mocking

27
Q

Describe stubbing.

A

A stub is a dummy services, calls to which are not verified as part of the test

28
Q

Describe mocking.

A

A mock is a dummy service, calls to which are verified as part of the test

29
Q

What two things can an end-to-end test be?

A

Brittle and flaky

30
Q

What does it mean if an end-to-end test is brittle?

A

A brittle test is one that fails because another service fails

31
Q

What does it mean if an end-to-end test is flaky?

A

A flaky test is one that sometimes fails because another service fails, perhaps due to a time-out or race condition

32
Q

Name 5 cautions about end-to-end tests.

A

Individual team tests
Dedicated testing teams
The normalisation of deviance
The time to run
The lack of independent testability

33
Q

Why is individual team tests a caution when it comes to end-to-end testing?

A

End-to-end tests may be created by every individual team, leading to slow runs and a lack of ownership

34
Q

Why is having dedicated testing teams a caution when it comes to end-to-end testing?

A

End-to-end tests may be created by a dedicated testing team, leading to bottlenecks and adversarial friction

35
Q

Why is the normalisation of deviance a caution when it comes to end-to-end testing?

A

Flaky end-to-end tests lead to the normalisation of deviance - developers lose faith in a test suite that “always fails like that”

36
Q

Why is the time to run a caution when it comes to end-to-end testing?

A

End-to-end tests may steadily pile up, increasing the time to run (maybe even to days)

37
Q

Why is the lack of independent testability a caution when it comes to end-to-end testing?

A

End-to-end tests may require teams to coordinate with each other or wait for each other

38
Q

What is the key to effective testing?

A

Automation