Software Engineering Ch.8

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

5 TDD Process Activities

1. Identify increments of required functionality, 2. Write a test, 3. Run test (will fail because no code), 4. Write code, run test, 5. If all successful, move on to next step

Performance testing

A part of release testing that tests the profile of use for a system; stress testing, performance, reliability

Software component

Several interacting objects

Component testing

Should focus on showing the component interface behaves according to its specification (already have to have unit testing completed.)

Program testing

Show that it does what it should do and show defects.

Software inspections

Static verification; analysis of static system representation to discover problems; tool-based document and code analysis

Defect testing

Unintended use, discover faults

Guideline-based testing

Use testing guidelines

User testing

Users/customers provide input and advice.

Equivalence partitions

When the program behaves in an equivalent way for each class member

3 Differences between system and release testing

1. A separate team is testing in release testing, 2. System testing is focused on discovering bugs (defect testing), 3. Release testing focuses on validation testing (good enough for normal use)

3 Steps of User testing

1. Alpha (users work with dev team), 2. Beta (release is made available to users), 3. Acceptance (customers test to see if it is ready for full use)

5 General testing guidelines

1. Choose inputs that force system to generate all error messages, 2. Design inputs to cause overflow, 3. Repeat the same input, 4. Force invalid inputs, 5. Force computation results to be too small/large

4 Benefits of TDD

1. Code coverage (every part has a test), 2. Regression testing (regressing test suite is developed incrementally as program is developed), 3. Simplified debugging (easy to identify problems in small chunks), 4. System documentation (tests are a form of documentation that describe what the code should be doing).

3 Stages of testing

1. Development, 2. Release, 3. By users

3 Interface Errors

1. Misuse (calling component calls another component and makes an error, i.e. parameters in wrong order), 2. Misunderstanding (calling component embeds assumptions which are incorrect), 3. Timing errors (called and calling components operate at different speeds and out-of-date information is accessed).

4 Interface Types

1. Parameter(data passed from one method to another), 2. Shared memory(block of memory is shared between two methods), 3. Procedural(sub-system encapsulates a set of procedures to be called by other sub-systems), 4. Message passing(sub-systems request services from other sub-systems).

5 Interface testing guidelines

1. Parameters are at the extreme range, 2. Test pointers with null pointers, 3. Cause component to fail, 4. Stress testing in message passing systems, 5. Shared memory - vary order of which components are activated

3 Automated test components

1. Set up test cases(inputs and expected outputs), 2. Call object or method, 3. Assertion (AssertEquals/True).

4 Testing Guidelines(Sequences)

1. Test software with sequences of only a single value, 2. Use different sized sequences, 3. Derive tests so that the first, middle, and last elements of sequence of accessed, 4. Test with sequences of zero length

4 parts of acceptance testing in agile development

1. User is part of the dev team, 2. Tests are defined by user, 3. There is no separate acceptance testing process, 4. Main problem is that the user is "typical" and represents all interests of all stakeholders

Two Testing goals

1. Validation (software meets requirements), 2. Defects (find failures)

Verification

Answers the question, "does our product conform to specifications?"

Validation

Answers the question, "does the product do what the user requires?"

Goal of release testing

Convince the supplier that it's good enough for use (shows that it delivers its specified functionality, performance and dependability, and does not fail during normal use)

Interface testing

Detect faults due to interface errors or invalid assumptions

Software testing

Dynamic verification; exercise software behavior

Stress testing

Form of performance testing where system is deliberately overloaded to test failure behavior

Software purpose

How critical the software is

Partition testing

Identify groups of inputs that have common characteristics and should be processed the same way.

Development Testing

Includes unit testing, component testing, system testing

System testing

Integrate components to create a version of the full product and test it fully. Checks that components are compatible.

Validation testing

Intended use, confirm system works

Test-Driven Development(TDD)

Interleaves testing and code development; tests are developed before code. Used in mainly agile development but can be plan-driven.

Scenario testing

Invent a typical usage scenario and use this to derive test cases.

Two main types of unit tests

Normal Operation and Abnormal Operation

Regression testing

Testing the system to check that changes have not broken previous code

Unit testing

Tests individual methods within an object

Why is it hard to test inherited objects?

The information to be tested is not localized

Release Testing

The process of testing a particular release of a system, a form of system testing


Set pelajaran terkait

Pharmacology and Medication Management

View Set

Organizational Behavior homework 9

View Set

Vendor/ Supplier Management & Project Management

View Set

PrepU Chapter 23 - Body Mechanics

View Set

MCSD Certification Toolkit (Exam 70-483): Programming in C# by @SHANEBREWER

View Set