2.1 Texting in the context of a Software Development Lifecycle Flashcards

1
Q

What is a software development lifecycle (SDLC)?

A

= abstract, high-level representation of the software development process.
defines how different development phases and types of activities performed within this process relate to each other, both logically and chronologically

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

What are the different types of SD development and agile practices?

A

sequential development models (e.g., waterfall model, V-model), iterative development
models (e.g., spiral model, prototyping), and incremental development models (e.g., Unified Process).

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

What does the choice of SDLC impact?

A
  • Scope and timing of test activities (e.g., test levels and test types)
  • Level of detail of test documentation
  • Choice of test techniques and test approach
  • Extent of test automation
  • Role and responsibilities of a tester
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the good testing practices that are independent of the chosen SDLC?

A
  • For every software development activity, there is a corresponding test activity, so that all
    development activities are subject to quality control
  • Different test levels (see chapter 2.2.1) have specific and different test objectives, which allows
    for testing to be appropriately comprehensive while avoiding redundancy
  • Test analysis and design for a given test level begins during the corresponding development
    phase of the SDLC, so that testing can adhere to the principle of early testing
  • Testers are involved in reviewing work products as soon as drafts of this documentation are
    available, so that this earlier testing and defect detection can support the shift-left strategy (see
    section 2.1.5)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the different test driven software development approaches?

A
  1. Test-Driven Development (TDD)
  2. Acceptance Test-Driven Development (ATDD)
  3. Behavior-Driven Development (BDD):
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

How is test-driven development characterised?

A
  • Directs the coding through test cases (instead of extensive software design) (Beck 2003)
  • Tests are written first, then the code is written to satisfy the tests, and then the tests and code are
    refactored
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

How is acceptance test-driven development charactised?

A
  • Derives tests from acceptance criteria as part of the system design process (Gärtner 2011)
  • Tests are written before the part of the application is developed to satisfy the tests
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

How is behavior-driven development characterised?

A
  • Expresses the desired behavior of an application with test cases written in a simple form of natural language, which is easy to understand by stakeholders – usually using the Given/When/Then format. (Chelimsky 2010)
  • Test cases are then automatically translated into executable tests
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is DevOps?

A

organisational approach aiming to create synergy by getting development (including testing) and operations to work together to achieve a set of common goals

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

From a testing perspective, what are the benefits of DevOps?

A
  • Fast feedback on the code quality, and whether changes adversely affect existing code
  • CI promotes a shift-left approach in testing (see section 2.1.5) by encouraging developers to submit high quality code accompanied by component tests and static analysis
  • Promotes automated processes like CI/CD that facilitate establishing stable test environments
  • Increases the view on non-functional quality characteristics (e.g., performance, reliability)
  • Automation through a delivery pipeline reduces the need for repetitive manual testing
  • The risk in regression is minimized due to the scale and range of automated regression tests
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the risks and challenges associated with DevOps?

A
  • The DevOps delivery pipeline must be defined and established
  • CI / CD tools must be introduced and maintained
  • Test automation requires additional resources and may be difficult to establish and maintain
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is shift left approach in testing?

A

The principle of early testing (see section 1.3) is sometimes referred to as shift-left because it is an
approach where testing is performed earlier in the SDLC. Shift-left normally suggests that testing should be done earlier (e.g., not waiting for code to be implemented or for components to be integrated), but it does not mean that testing later in the SDLC should be neglected.

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

What are the good practices associated with implementing shift left?

A
  • Reviewing the specification from the perspective of testing. These review activities on specifications often find potential defects, such as ambiguities, incompleteness, and inconsistencies
  • Writing test cases before the code is written and have the code run in a test harness during code implementation
  • Using CI and even better CD as it comes with fast feedback and automated component tests to accompany source code when it is submitted to the code repository
  • Completing static analysis of source code prior to dynamic testing, or as part of an automated process
  • Performing non-functional testing starting at the component test level, where possible. This is a form of shift-left as these non-functional test types tend to be performed later in the SDLC when a complete system and a representative test environment are available
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is discussed in a team retro?

A
  • What was successful, and should be retained?
  • What was not successful and could be improved?
  • How to incorporate the improvements and retain the successes in the future?
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Who is involved in a team retro?

A

testers, developers, architects, product owner, business analysts)

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

What are the benefits of a retro?

A
  • Increased test effectiveness / efficiency (e.g., by implementing suggestions for process improvement)
  • Increased quality of testware (e.g., by jointly reviewing the test processes)
  • Team bonding and learning (e.g., as a result of the opportunity to raise issues and propose improvement points)
  • Improved quality of the test basis (e.g., as deficiencies in the extent and quality of the requirements could be addressed and solved)
  • Better cooperation between development and testing (e.g., as collaboration is reviewed and optimised regularly)
17
Q

What are the key difference between 1) contract and regulation acceptance testing and 2) alpha and beta testing?

A

1) are for custom developed software
2) are off the shelf products

18
Q

What is the difference between alpha and beta release?

A

Alpha Release: It is limited to an internal audience, typically developers and testers.
Beta Release: It involves a larger, external audience, including early adopters and beta testers

19
Q

What are test oracles?

A

provider of information that describes correct output based on the input of a test case. Testing with an oracle involves comparing actual results of the system under test (SUT) with the expected results as provided by the oracle
eg tester, existing system, user manual

20
Q

What is a stub?

A

stub acts as a small piece of code that replaces another component during testing

21
Q

What is the key benefit of using stubs?

A

the ability to obtain consistent results to make test writing easier. Even if the other components aren’t yet fully functional, you can still execute tests by using stubs.