Software Testing Flashcards

1
Q

Why do we test software?

A

to ensure we’re building the right product and building it right

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

What are the two general categories of testing?

A

Validation Testing

Defect Testing

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

Why is Testing important?

A

Testing identifies deficiencies in requirements, design & implementation

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

What is the purposes of Validation Testing?

A

Demonstrate that software meets requirements

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

What does Validation Testing test?

A
  • The main success scenario of each use-case

- The main use-case extensions

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

What is the purpose of defect testing?

A

Finding defects by finding inputs where the software behaviour is incorrect

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

What does Defect Testing test?

A
  • Use-case extensions that define error handling
  • How the system operates under stress
  • The boundaries of functional & non-functional requirements
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What did Edsger Dijkstra say about Testing?

A

Testing can only show the presence of errors, not their absence

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

True or False: Validation Testing is performed as an end-of-cycle activity

A

False, Validation Testing is performed throughout the entire development process

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

What are some of the questions that Validation Testing attempts to answer?

A
  • Are we building the right product?
  • Does the product do what the customer expects it to?
  • Does the customer validate that the software solves the problem it’s intended to solve?
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the three purposes of Verification Testing?

A
  • Find defects by finding inputs where the software behaviour is incorrect
  • Find defects by modifying & stressing the environment in which the software operates
  • Have the software for completeness (does it deliver on all its functional & non-functional requirements?)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

How do we verify & validate software?

A
  • Inspection & Reviews

- Testing

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

What are the properties of Software Inspection?

A
  • In-depth (errors don’t cover/mask other errors)
  • Does not need running or complete code
  • Economical (no additional Unit Tests)
  • Everything can be inspected, not just code
  • Can consider qualities (non-functional requirements) that are hard to test otherwise
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

How effective if Software Inspection?

A

60-90% of errors can be found via inspection

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

What are the three types of Testing?

A
  • Development Testing
  • Release Testing
  • User Testing
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What is Development Testing?

A

Conducted by developers as part of the development process

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

What is Release Testing?

A

conducted by independent testing teams that verifies & validates that the integrate software is correct

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

What is User Testing?

A

Conducted by users or pseudo-users to validate that software is suitable

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

What is the main purpose of debugging code?

A

to validate your assumptions

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

True or False: Debugging is not integral to software development and is a separate testing activity

A

False, Debugging is integral to software development and is not a separate testing activity

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

What are the limitations of Software Inspection?

A
  • Typically a manual process which prevents regression verification
  • Hard to inspect complex runtime conditions
  • Considered an expensive process
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Why is regression verification a limitation of Software Inspection?

A

Static code analysis can be performed automatically using tools to discover anomalies, compliance with standards, testability, code contracts

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

Why are runtime conditions a limitation for software inspection?

A
  • Unexpected interactions between components
  • Timing problems
  • Performance issues
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What is Unit Testing?

A

Development testing that verifies the functionality of objects & their methods

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

What is Component Testing?

A

Development testing tht verifies several units (e.g. objects) that are integrated to create a component

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

What is System Testing?

A

Development testing that verifies components that are integrated to create a component

27
Q

What is Release Testing?

A

Validation Testing of a release to demonstrate system meets requirements & is performed by an independent QA team

28
Q

What are the types of Development Testing?

A
  • Unit Testing
  • Component (Interface) Testing
  • System Testing
29
Q

Development Testing is primarily what?

A

A defect testing activity with the goal of finding as many bugs as possible

30
Q

What is the purpose of Unit Testing?

A

Verifies the functionality implemented in objects & their methods by testing all possible states, inputs & outputs

31
Q

True or False: Unit Testing is conducted in the system with highly coupled units

A

False, Units are tested in isolation with a loosely coupled relationship

32
Q

How is Unit Testing automated?

A

Using Unit Test Frameworks

33
Q

List some Unit Testing Frameworks

A
  • JUnit (Java)
  • XCTest (Swift)
  • Nunit/MSTest/VSTest/xUnit (C#)
  • Mocha/Unit.js (NodeJS)
34
Q

Unit tests are typically implemented as what?

A

A Test Class with Test Methods

35
Q

How are Test Methods organized?

A
  • Setup/Arrange
  • Call/Act
  • Assertion
36
Q

How can you write effective Unit Tests?

A
  • Determining inputs to be used in Unit Tests
  • Partition Testing
  • Guideline-based Testing
37
Q

What criteria can inputs be selected by for unit testing?

A
  • choose inputs to reflect normal operation

- Choose abnormal inputs to reflect error conditions

38
Q

What is Partition Testing?

A
  • Identify groups of inputs with similar behaviour
  • Test input in the middle of the partition
  • Test inputs at the boundaries of the partition
39
Q

What are the basic Unit Testing Guidelines?

A
  • Test sequences with a single element or no element
  • Use different sizes of collections for different tasks
  • Tests the first, middle & last element of a sequence
  • choose inputs that force all error messages
  • Load testing to attempt to overflow buffers & test the limits of the application
  • Force computation results that are too large or too small
  • Repeat the same inputs multiple times
40
Q

What are the types of Interfaces that are tested in Component Testing?

A
  • Methods/Precedure based interfaces
  • Message Passing Interfaces (Async)
  • Shared Memory interfaces
41
Q

What are they two types of Interface Errors in Component Testing?

A
  • Interface Misuse

- Timing Errors

42
Q

What are the Component Testing Guidelines?

A
  • Test the boundaries of interaction with external components
  • Test arguments just like in a unit-test
  • Testing calling methods in different order & in different states
  • Stress testing for speed, memory, & number of messages
43
Q

Why is System Testing important?

A

Some errors only occur when the entire system is integrated & this is what System Testing aims to verify

44
Q

What is the purpose of Use-Case based testing?

A

Verifying the main success scenario, extensions & error handling extensions

45
Q

What are the System Testing Guidelines?

A
  • Exhaustive testing is not possible/practical
  • All system functions accessible through menus & UI elements must be tested
  • Combinations of functions must be determined & tested
  • Never wait until the end to system test a product
46
Q

What is Test Driven Development?

A

the mot enduring & generalizable practice in XP (Extreme Programming)

47
Q

True or False: Test Driven Development is practiced in either Agile or Plan-Based Processes, not both

A

False, TDD can be practices in both Agile & Plan-Based Processes

48
Q

What does Test Driven Development emphasize?

A

The testability of the system

49
Q

What are the Benefits of Test Driven Development?

A
  • Code Coverage
  • Regression Testing
  • Support effective & constant refactoring
  • Supports effective debugging
  • Provides elements of requirements analysis & design that leverage only coding/programming knowledge
50
Q

What are the Limitations of Test Driven Development?

A
  • Not an alternative to requirements analysis
  • Not an alternative to software architecture & software design modelling
  • Hard to use for component & system testing for large enough systems
  • Hard to use when system uses legacy code or large components
51
Q

True or False: Release testing is done by the development team

A

False, Release testing is done by a QA team not the development team

52
Q

What are the goals of Release Testing?

A

Ensure the system is ready to be delivered to customers &/or users

53
Q

What are the two ways to conduct Release Testing?

A
  • Requirements-Based Testing

- Scenario-Based Testing

54
Q

What are the properties of Requirements-Based Release Testing?

A
  • Requirements should be testable
  • Consider each requirement & derive a set of tests for it
  • Demonstrates the system has properly implemented its requirements
  • Traceability records demonstrates that all requirements have been tested
55
Q

What are the properties of Scenario-Based Testing?

A
  • Uses real-world usage scenarios when neither use-cases nor stories were used in requirements definition
  • Release testers run through the scenario using the system to validate the system responds accordingly
  • A scenario encapsulates many requirements so this test integration of related functionality
56
Q

What is Performance Testing?

A

Validating that the system can process the intended load (e.g. number of users, requests, size of data)

57
Q

How is Performance Testing conducted?

A

By increasing the load on the system until the system performance is unacceptable

58
Q

What is Stress Testing?

A

Test how the system behaves when it is subjected to demands outside of the design limits; also a type of Performance Testing

59
Q

What are the requirements of Performance Testing?

A

Define the operational profile of the system; the typical load of a system needed to get accurate test of the operational performance of the system

60
Q

What is User Testing?

A

Performed by users/customer of the system in the user’s environment

61
Q

Why is User Testing Important?

A

Because it’s impossible to replicate the complexity of all user environments

62
Q

What are the types of User Testing?

A

Alpha Testing
Beta Testing
Acceptance Testing

63
Q

What is Alpha Testing?

A

Select set of users work with developers to test early releases of the software

64
Q

What is Beta Testing?

A

Larger group of users work with the software aiming to discover defects (defect testing)