Chapter 5 Flashcards

(23 cards)

1
Q

What Should be Assumed in Defensive Programming?

A
  • Users will make mistakes
  • Inputs may be malicious
  • Systems will fail at the worst time
  • Use Redundant Checks + Explicitly Test Assumptions
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is Graceful Degredation?

A

A system can still run essential operations when at less capable environments

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

What are the Three Pillars of Reliable Secure Software?

A
  • Fault Avoidance
  • Fault Tolerance
  • Fault Detection
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is N-version Programming?

A

Running N independent instances of a software with the same functionality

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

What is Cleanroom Software Development?

A

Methodology to keep defects out, not to patch them later

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

What are the Techniques Being Practiced in Cleanroom Software Development?

A
  • Formal Specification
  • Incremental Development with Customer Input
  • Constrained Programming Options
  • Static Verification
  • Statistical Testing
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Differentiate Static vs Dynamic Verification

A
  • Static Verification is testing software without executing it
  • Dynamic Verification is testing software with trial data
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is Verification?

A

Checking if a product is built in accordance to its specifications

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

What is Testing?

A

Proving software functions properly and meets user needs

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

What is Unit Testing?

A

Testing small, isolatable parts of code to ensure functionality

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

What is System Testing?

A

Testing the whole system to ensure overall functionality

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

What is Sub-System Testing?

A

Testing module and unit interaction to ensure system cohesion

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

What is Acceptance Testing?

A

Testing a system to ensure it meets user needs, requirements, and business processes

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

What are the Types of Testing Strategies?

A
  • Bottom-up testing: smallest units are tested and grouped
  • Top-down testing: Testing main components and sub-components
  • Stress testing: Pushing a system beyond its limits
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Validation vs Verification?

A
  • Validation: checking if the deliverable is what the user requested
  • Verification: checking if deliverable is built properly
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are Common Software Errors?

A
  • Data Faults
  • Control Faults
  • Input/out Faults
  • Interface Faults
  • Interface Faults
  • Storage Management Faults
  • Exceptions
17
Q

What is the Objective of Testing?

A

To find faults

18
Q

What are Test Cases?

A
  • Specific tests that are chosen to find faults
  • Balance Cost vs Benefit
19
Q

What are Good Sources of Test Cases?

A
  • Developers (Know weak spots)
  • Clients (Business Gaps)
  • Inexperienced Users (Unexpeced Mistakes)
20
Q

Why is Coverage of Inputs Important in Test Case selection?

A

To test all classes of input

21
Q

Why is Coverage of Program Important in Test Case selection?

A

To test all functions of each computer program

22
Q

What are the Steps of Bug Fixing?

A
  • Isolate Bug
  • Understand Bug
  • Fix Bug
23
Q

What is Regression Testing?

A

Repeating already executed tests to check if any changes have impacted the system negatively