Professional Documents
Culture Documents
Slides of Test and SQA
Slides of Test and SQA
Slides of Test and SQA
Chapter 9
Quản lý chất lượng PhầnMềm
Quality assurance
Establish organisational procedures and standards for
quality.
Quality planning
Select applicable procedures and standards for a
particular project and modify these as required.
Quality control
Ensure that procedures and standards are followed by
the software development team.
Quality management should be separate from
project management to ensure independence.
What is...
error/bug/fault/failure/testing?
Overview of the testing process
Classifying aspects of testing
a successful test:
finds at least one error
gives quality judgment with maximum
confidence with minimum effort
2c
1a
1b
2b 2a 1c
system
specification test
detailed integration
design test
implementation unit
code test
Kiểm thử và Đảm bảo Chất lượng Phần mềm 1.16
1c. Test purpose
What errors to find?
typical types
functional mistakes
data-based
structure-based
Perfect repair
...
smoke testing
requirements: only major functions
purpose: often system testing
method: error guessing
assumption: (regression testing) a bit of testing suffices
capture/replay tool
test implementation & execution: the tool records test input
behaviour and saves it for automatic reuse
traceability matrix
requirements, test set: the matrix shows relationship between
these, gives some coverage confidence
Tested items
The products of the software process that are to be tested should be
specified.
Testing schedule
An overall testing schedule and resource allocation for this schedule. This,
obviously, is linked to the more general project development schedule.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 2.17
Lập kế hoạch kiểm thử(cont.)
Thủ tục ghi chép lại kiểm thử.
It is not enough simply to run tests. The results of the tests must be
systematically recorded. It must be possible to audit the testing
process to check that it been carried out correctly.
Ràng buộc
Constraints affecting the testing process such as staff shortages
should be anticipated in this section.
Inspector
Finds errors, omissions and inconsistencies in programs
and documents. May also identify broader issues that are
outside the scope of the inspection team.
Reader
Presents the code or document at an inspection meeting.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 2.26
Inspection roles (cont.)
Scribe (Secretary)
Records the results of the inspection meeting.
Chairman or moderator
Manages the process and facilitates the inspection.
Reports process results to the Chief moderator.
Chief moderator
Responsible for inspection process improvements,
checklist updating, standards development etc.
Input/output faults
• Variables output twice with no intervening
assignment
• Interface faults
• Parameter type mismatches
• Parameter number mismatches
• Non-usage of the results of functions
• Uncalled functions and procedures
Storage management faults
• Unassigned pointers
• Pointer arithmetic
Kiểm thử và Đảm bảo Chất lượng Phần mềm 2.37
Stages of static analysis
Control flow analysis. Checks for loops with
multiple exit or entry points, finds
unreachable code, etc.
Data use analysis. Detects uninitialised
variables, variables written twice without an
intervening assignment, variables which are
declared but never used, etc.
Interface analysis. Checks the consistency of
routine and procedure declarations and their
use
main ()
{
int Anarray[5]; int i; char c;
printarray (Anarray, i, c);
printarray (Anarray) ;
}
139% cc lint_ex.c
140% lint lint_ex.c
SHe thong
1. Test the login mechanism using correct and incorrect logins to check
that valid users are accepted and invalid users are rejected.
2. Test the search facility using different queries against known sources to
check that the search mechanism is actually finding documents.
3. Test the system presentation facility to check that information about
documents is displayed properly.
4. Test the mechanism to request permission for downloading.
5. Test the e-mail response indicating that the downloaded document is
available.
Pre-condition
-- the sequence has at least one element
T’FIRST <= T’LAST
Post-condition
-- the element is found and is referenced by L
( Found and T (L) = Key)
or
-- the element is not in the array
( not Found and
not (exists i, T’FIRST >= i <= T’LAST, T (i) = Key ))
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14
1, 2, 3, 4, 5, 14
1, 2, 3, 4, 5, 6, 7, 11, 12, 5, …
1, 2, 3, 4, 6, 7, 2, 11, 13, 5, …
Test cases should be derived so that all of
these paths are executed
A dynamic program analyser may be used to
check that paths have been executed
1. What is tested?
a. Software characteristics (design/embedded?/language/...)
b. Requirements (what property/quality do we want from the software)
c. Purpose (what development phase, what kind of errors, what next step)
2. How to test?
a. Method (adequacy criterion: how to generate how many tests)
b. Assumptions (limitations, simplifications, heuristics)
c. Organization (documentation, implementation, execution:platform, interactive, batch)
d. Who tests? (programmer, user, third party)
3. How are the results evaluated?
2c
1a
1b
2b 2a 1c
system
specification test
detailed integration
design test
implementation unit
code test
data-based
structure-based
all
requirements: some logical/mathematical input/output relation
purpose: unit testing, functional mistakes
method: black box, data-based
assumption: both single-/multiple-fault assumption
boundary value testing
method: typical errors (boundaries of domains)
equivalence partitioning/decision tables
method: efficiency
a b x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.10
Robustness boundary value
also test values outside the domain
# tests =
for n input variables, 6n+1 input combinations
a test: <x_nom, y_max+1, expected output>
y
maximal value Å d
nominal value Å
minimal value Å c
a b x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.11
Worst-case boundary value
multiple-fault assumption
# tests =
for n input variables, 5n input combinations
y
d
a b x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.12
Worst-case robustness bv
a b x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.13
Subsume relations
AÆB Method A subsumes method B if A tests
at least what B tests (possibly more)
Which subsume relations for boundary
value variants? y
(Assume one fixed nominal d
value for each input)
boundary value
worst-case robustness c
worst-case robustness
a b x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.14
Boundary value testing Mortgage
Observations
Input gender is not a quantity
a b c d x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.17
Equivalence partitioning
strong normal variant:
assumes:
multiple-fault assumption
#tests =
Π s_x for each input x
y
g
a b c d x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.18
Equivalence partitioning
weak robust variant:
tests outside domain
assumes:
independent variables
single-fault assumption
#tests = y
max s_x for any input x g
+ 2*(#inputs)
a b c d x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.19
Equivalence partitioning
strong robust variant:
tests outside domain
assumes:
multiple-fault assumption
#tests = y
Π (s_x+2) for each g
input x
f
a b c d x
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.20
Subsume relations
weak normal
f
strong normal weak robust
strong robust e
a b c d xx
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.21
Equivalence partitioning summary
Coverage: moderate
#tests: small to moderate
Usage: some study of requirements needed
When to use:
independent inputs
enumerable quantities
when suspecting computational errors
when redundancy can be assumed
may easily be combined with boundary value
Coverage: good
#tests: moderate to large
Usage: much study of requirement needed
When to use:
dependent inputs
when suspecting computational errors
may be combined with boundary testing (tricky)
See literature:
Zhu
Jorgensen
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.25
Error guessing & Random Testing
Error guessing
No method involved, just experiment and see if
something goes wrong
Some people have a knack for exposing failures
(e.g. young children!)
Random testing
Select input combinations randomly
2c
1a
1b
2b 2a 1c
system
specification test
detailed integration
design test
implementation unit
code test
data-based
structure-based
all criteria
requirements: some logical/mathematical
input/output relation
software characteristics: available, imperative
programming language
purpose: unit testing, functional mistakes
method: white box, structure-based, coverage,
efficiency
assumption: both single and multiple-fault
assumption
14.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.34
Testing the triangle program
4. (a<=b+c or b<=a+c or c<=b+c)? each test
represents a
yes no
5. IsATriangle := true 6. IsATriangle := false
path: a=b=c=1
7. IsATriangle?
yes no
14. end
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.35
Testing the triangle program
4. (a<=b+c or b<=a+c or c<=b+c)? each test
yes no
represents a
5. IsATriangle := true 6. IsATriangle := false
path: a=b=c=1:
7. IsATriangle? “Equilateral”
yes no coverage:
8. (a=b and b=c)? 13. “Not a triangle” nodes
yes no edges
9. “Equilateral” 10. (a≠b and a≠c and b≠c)? ...
yes no all paths feasible?
11. “Scalene” 12. “Equilateral” no! (this is in general
undecidable)
14. end
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.36
Program graphs & testing
infeasible paths:
combinations that cannot occur
(dependent nodes)
dead code
# paths:
possibly infinite (loops!)
coverage criteria:
...
branch+condition coverage
Note: multiple condition coverage tests more, but may show fewer failures
than branch+condition coverage! (Frankl & Weyuker, Provable
Improvements on Branch Testing, IEEE Trans. Softw. Eng.:19(10), 1993)
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.39
Testing the triangle program
4. (a<=b+c or b<=a+c or c<=b+c)? each test
yes no represents a path:
5. IsATriangle := true 6. IsATriangle := false a=b=c=1: “Equilateral”
coverage:
7. IsATriangle?
no edges
yes
8. (a=b and b=c)? 13. “Not a triangle”
yes no
Exercise (5 min):
9. “Equilateral” 10. (a≠b and a≠c and b≠c)? Construct input combinations,
yes no such that each edge is executed.
11. “Scalene” 12. “Equilateral” Compare program output values
to required output values.
Which path is not feasible?
14. end
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.40
Observations
How to construct tests & get everything covered?
Guidelines:
Start with test generation based on black box method
Measure white box coverage for black box test set
Use tools!
Which coverage criterion?
Æ How many errors may remain?
Æ A bit stronger than branch coverage is very effective, e.g.
branch + condition coverage
Æ Industrial practice:
varies from statement coverage (100%?) to multiple condition
coverage (?%)
1. What is tested?
a. Software characteristics (design/embedded?/language/...)
b. Requirements (what property/quality do we want from the software)
c. Purpose (what development phase, what kind of errors, what next step)
2. How to test?
a. Method (adequacy criterion: how to generate how many tests)
b. Assumptions (limitations, simplifications, heuristics)
c. Organization (documentation, implementation, execution:platform, interactive, batch)
d. Who tests? (programmer, user, third party)
3. How are the results evaluated?
2c
1a
1b
2b 2a 1c
system
specification test
detailed integration
design test
implementation unit
code test
data-based
structure-based
all criteria
requirements: behaviour, defined in FSM
software characteristics: can be modelled as
an FSM
purpose: unit testing, functional mistakes
method: black box, structure-based,
coverage, efficiency
assumption: ...
Both
PushRhythm?/- PushSong?/-
implementation?
Specification Implementation
FSM model of
FSM model of software to be
tested
requirements
satisfies restrictions except
satisfies restrictions ‘reduced’
previous slide not really needed, but:
is used for test justification for FSM-based
testing
generation
#states must be estimated
b?/e!
a?/e! b?/e!
test each transition: <s,i?>
1. go to state s from arbitrary state a?/- s1
c?/-
(synchronizing sequence + transferring sequence)
2. apply input i?
(test transition)
3. check output λ(s,i)
(test transition)
4. check if in state δ(s,i)
(UIO-sequence/distinguishing sequence/W-set/...)
test fails iff something wrong in step 3. or 4.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.61
Test generation from Spec c?/-
s0
b?/e!
a?/e! b?/e!
test each transition: <s,i?>
1. go to state s from arbitrary state a?/- s1
c?/-
(synchronizing sequence + transferring sequence)
2. apply input i?
(test transition) a? b?
3. check output λ(s,i)
(test transition)
4. check if in state δ(s,i)
(UIO-sequence/distinguishing sequence/W-set/...)
test fails iff something wrong in step 3. or 4.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.62
Test generation from Spec c?/-
s0
b?/e!
a?/e! b?/e!
test each transition: <s,i?>
1. go to state s from arbitrary state a?/- s1
c?/-
(synchronizing sequence + transferring sequence)
2. apply input i?
(test transition) for s0: (empty)
3. check output λ(s,i) for s1: a?
(test transition)
4. check if in state δ(s,i)
(UIO-sequence/distinguishing sequence/W-set/...)
test fails iff something wrong in step 3. or 4.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.63
Test generation from Spec c?/-
s0
b?/e!
a?/e! b?/e!
test each transition: <s,i?>
1. go to state s from arbitrary state a?/- s1
c?/-
(synchronizing sequence + transferring sequence)
2. apply input i?
(test transition) e.g. for <s1,b?>: b?
3. check output λ(s,i)
(test transition)
4. check if in state δ(s,i)
(UIO-sequence/distinguishing sequence/W-set/...)
test fails iff something wrong in step 3. or 4.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.64
Test generation from Spec c?/-
s0
b?/e!
a?/e! b?/e!
test each transition: <s,i?>
1. go to state s from arbitrary state a?/- s1
c?/-
(synchronizing sequence + transferring sequence)
2. apply input i?
(test transition) e.g. for <s1,b?>: e!
3. check output λ(s,i)
(test transition)
4. check if in state δ(s,i)
(UIO-sequence/distinguishing sequence/W-set/...)
test fails iff something wrong in step 3. or 4.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.65
Test generation from Spec c?/-
s0
b?/e!
a?/e! b?/e!
test each transition: <s,i?>
1. go to state s from arbitrary state a?/- s1
c?/-
(synchronizing sequence + transferring sequence)
2. apply input i?
(test transition) a?
3. check output λ(s,i) output for state s1: -
(test transition)
4. check if in state δ(s,i)
(UIO-sequence/distinguishing sequence/W-set/...)
test fails iff something wrong in step 3. or 4.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.66
Test generation from Spec c?/-
s0
b?/e!
a?/e! b?/e!
The total set of tests:
a?/- s1
c?/-
Homework: to be completed!
Why is it correct?
Non-deterministic systems
Data parameters
Literature: Lee and Yannakakis, “Principles and
Methods of Testing Finite State machines—A survey”,
Proc. of the IEEE:84(8), 1996.
Separate input or output transitions
Other implementation criteria (subsume rel)
Multi-process/distributed testing
Summary, guidelines
b?/e!
a?/e! b?/e!
test each transition: <s,i?>
1. go to state s from arbitrary state a?/- s1
c?/-
(synchronizing sequence + transferring sequence)
2. apply input i?
(test transition)
3. check output λ(s,i)
(test transition)
4. check if in state δ(s,i)
(UIO-sequence/distinguishing sequence/W-set/...)
test fails iff something wrong in step 3. or 4.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.69
Test generation assumptions
FSM = <S,I,O,δ,λ>
Spec FSM:
is deterministic, complete, reduced
has a synchronizing sequence
has an UIO sequence for each state
Impl FSM :
is deterministic, complete
has no more states than Spec
Generalised δ,λ functions:
δ(s, i_1 i_2 ... i_n) = t (target state of a sequence of inputs)
λ(s, i_1 i_2 ... i_n) = o_1 o_2 ... o_n (sequence of outputs)
b?/e!
a?/e! b?/e!
sequence of inputs
brings FSM to one designated state a?/- s1
c?/-
determine through successor graph:
node: set of states S’={s,t,...} (initially: S)
edge: from S’ to S’’ with i/o where b?/e! c?/-
S’’ = { δ(s,i) | s∈S’ and λ(s,i)=o }
{s0,s1}
synchronising sequence σ
all paths for σ from S end in same state {s}
{Off,Rhythm,Song,Both}
PR?/R!
PS?/-
PR?/- PQ?/Q! PS?/S!
PQ?/-
{Rhythm,Both} {Off} {Song,Both}
PQ?/Q! PQ?/Q!
PR?/-
PS?/-
PS?/- PR?/-
PR?/R!
PS?/S! {Both}
FSM: a?/0!
successor graph: {s1,s2,s3}
s1
b?/1! b?/0!
a?/0! a?/1! b?/0! b?/1!
check outputs
outputs determine which end state
always exists
extra test effort:
check outputs, determine end state
transfer to initial state (or directly to state-under-test)
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.74
UIO sequence s0
c?/-
b?/e!
a?/e! b?/e!
Unique Input/Output sequence determines
which first state a?/- s1
c?/-
inputs (+ expected outputs per state)
determine through successor graph with
initial states:
node: set of states S’={s,t,...} (initial: S) b?/e! c?/-
path from S’ to S’’ with i1/o1 i2/02 ...
{s0,s1}
S’’={ s∈S’ | λ(s,i1 i2...) = o1 o2... }
UIO sequence for s: path to {s} a?/e! a?/-
does not always exist!!
{s0} {s1}
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.75
For musical toy {current states}
{possible initial states}
{O,R,S,B}
{O,R,S,B}
PR?/R!
PS?/-
PQ?/- PS?/S!
PR?/- PQ?/Q!
{R,B} {R,B} {O}
{O,S} {O} {S,B} {S,B}
{R,B} {O} {O,R} {S,B}
{R,S,B}
a?/0! b?/0!
a?/0! a?/1! b?/0! b?/1!
{s1} {s3} {s3} {s2}
s2 s3 {s1,s2} {s3} {s1} {s2,s3}
b?/1!
b?/1! a?/1! a?/0! b?/0! b?/1!
a?/0!
UIO sequences? {s3}
{s1}
{s1,s2}
s1: b?/0! s3: a?/1! {s2,s3}
s2: no UIO sequence!
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.77
Relax: UIO vs. W-set s0
c?/-
b?/e!
a?/e! b?/e!
UIO:
1 sequence of inputs/outputs per state s1
a?/-
does not always exist c?/-
W-set:
set W(s) of input (+ output) sequences for state s
for each distinct pair s,s’: W(s) contains a sequence that
distinguishes s from s’
always exists
extra test effort:
large number of sequences
to establish state verification for s, repeatedly go back to s to
test all sequences in W(s)
is non-deterministic: a?/e! t
randomize testing algorithm
s
a?/e! u
is incomplete:
test only specified parts s a?/0! t
b?/1! u
Impl FSM :
has n more states than Spec:
for complete coverage: extra test effort factor |I|n
No FSM model possible:
Labelled Transition System (LTS) model
input/output conformance (ioco) method
see KUN/UTwente courses on testing:
http://www.cs.kun.nl/~tretmans/testtechnieken/
a? t b?
u
s b?
f!
Kiểm thử và Đảm bảo Chất lượng Phần mềm 4.80
Structure-based black box testing summary
...
many stubs required s
many test sessions required A s s
1 session per unit
easy to isolate errors
s F G
top-down bottom-up
Main C F
1 1 2
m1 c1
2 5 3
2 E F G
5 3 f1
3 4
4 c2
6 m2 4 6
Main 1 C F
1 2
2 5 3
2
5 3
3 4
4
6 4 6
card
Bank Balance Machine
1 2 3
WELCOME
4 5 6
0 Cancel
InvalidCardIn?/CardOut! idle
ValidCardIn?/Screen2!
InvalidPIN?/Screen4!
process PIN
ValidPIN?/Screen5!
Cancel?/Screen7,CardOut!
process balance
Savings?/Screen6,CardOut! Checking?/Screen6,CardOut!
end session
CardRemoved?/Screen1!
Bank Machine
CardIn
ManageBalance
ValidatePIN
ValidateCard
CardOut
GetPIN
PrintReceipt
ContactBank
PrintScreen
Introduction
Introduction
Introduction
Kiểm thử và Đảm bảo Chất lượng Phần mềm 6.4
Reliability and Availability Definitions
1. Reliability: the probability that a system or a
capability of a system will continue to function
without failure for a specified period in a specified
environment. The period may be specified in natural
or time units.
A. Natural unit: unit other than time related to amount of
processing performed by software-based product, such as
runs, pages of output, transactions, telephone calls, jobs,
semiconductor wafers, queries, or API calls
B. Failure intensity (FI): failures per natural or time unit, an
alternative way of expressing reliability
2. Availability: the average (over time) probability that a
system or a capability of a system is currently
functional in a specified environment
Nature of SRE
Kiểm thử và Đảm bảo Chất lượng Phần mềm 6.5
How Does SRE Work?
1. Increase effective
Increase in resources
Effective A. Quantitatively characterize
Resources expected use
B. Focus resources on most
used and most critical
Original functions
Resources C. Maximize test effectiveness
by making test highly
representative of field
2. Implement Operational
Profiles
6. Guide Test
SRE Process
Kiểm thử và Đảm bảo Chất lượng Phần mềm 6.14
Activities of SRE Process and Relation
to Software Development Process
1. List Associated
Systems
2. Implement Operational
Profiles
6. Guide Test
1. Base product
2. Major variations of base product (for
substantially different environments,
platforms, or configurations)
3. Frequently used supersystems of base
product or variations
2. Implement Operational
Profiles
6. Guide Test
Release 2
Release 3
2. Implement Operational
Profiles
6. Guide Test
User-oriented
User-oriented Developer-oriented
Developer-oriented
2. Implement Operational
Profiles
6. Guide Test
2. Implement Operational
Profiles
6. Guide Test
Load
F Test Supersystem
R R R R
Variations
F = Feature test Certify reliability
R = Regression test Track reliability growth
SRE Process - Execute Test
Kiểm thử và Đảm bảo Chất lượng Phần mềm 6.34
Activities of SRE Process and Relation
to Software Development Process
1. List Associated
Systems
2. Implement Operational
Profiles
6. Guide Test
Conclusion - Explore
Kiểm thử và Đảm bảo Chất lượng Phần mềm 6.46
Software Testing and SQA
Chapter 7
Software Testing in Industry
(By Maurice Siteur)
2c
1a
1b
2b 2a 1c
TMap
Testing in embedded software
Life cycle
L
I O
Infrastructure Organization
Kiểm thử và Đảm bảo Chất lượng Phần mềm 7.5
TMap
Reproducing tests
System test
Test planning
‘Risk based’ testing
Test design
Test reporting
Approach/strategy
based on risk's
Use of quality attributes
Test case
Description
Starting point
Input
Expected result
End report
Conclusions
Findings
Preparation 20%
Specification 35%
Execution 40%
Completion 5%
TPI (Homework)
Level 3: Integration
- Control and monitor the test process
- Integrate testing into the software lifecycle
- Establish a technical training program
- Establish a software test organization
Level 1: Initial
Requirements
Acceptance criteria Test planning
Specifications
Static testing
Generating testsets
for system- and acc.testing
Design
Static testing
Generating testsets
on the basis of design
Coding
Static testing
Generating testsets
for progr.test
Dynamic testing
Test execution
• Capture and playback Aids White box testing
• Test drivers • Test design • Debugging
• Load en performance testing • Test data manipulation • Test coverage
• Monitoring
Test repository
Creation of a shortlist
Arrange demo’s
Pilot project
Roll out
1. What is tested?
a. Software characteristics (design/embedded?/language/...)
b. Requirements (what property/quality do we want from the software)
c. Purpose (what development phase, what kind of errors, what next step)
2. How to test?
a. Method (adequacy criterion: how to generate how many tests)
b. Assumptions (limitations, simplifications, heuristics)
c. Organization (documentation, implementation, execution:platform, interactive, batch)
d. Who tests? (programmer, user, third party)
3. How are the results evaluated?
2c
1a
1b
2b 2a 1c
Product attributes
Concerned with required characteristics of the software
product being developed.
Computer attributes
Constraints imposed on the software by the hardware
platform.
Personnel attributes
Multipliers that take the experience and capabilities of the
people working on the project into account.
Project attributes
Concerned with the particular characteristics of the
software development project.
Kiểm thử và Đảm bảo Chất lượng Phần mềm 8.49
Effects of cost drivers
Exponent value 1.17
System size (including factors for reuse 128, 000 DSI
and requirements volatility)
Initial COCOMO estimate without 730 person-months
cost drivers
Reliability Very high, multiplier = 1.39
Complexity Very high, multiplier = 1.3
Memory constraint High, multiplier = 1.21
Tool use Low, multiplier = 1.12
Schedule Accelerated, multiplier = 1.29
Adjusted COCOMO estimate 2306 person-months
Reliability Very low, multiplier = 0.75
Complexity Very low, multiplier = 0.75
Memory constraint None, multiplier = 1
Tool use Very high, multiplier = 0.72
Schedule Normal, multiplier = 1
Adjusted COCOMO estimate 295 person-months
Option RELY STOR TIME TOOLS LTEX Total effort Software cost Hardware Total cost
cost
A 1.39 1.06 1.11 0.86 1 63 949393 100000 1049393
B 1.39 1 1 1.12 1.22 88 1313550 120000 1402025
C 1.39 1 1.11 0.86 1 60 895653 105000 1000653
D 1.39 1.06 1.11 0.86 0.84 51 769008 100000 897490
E 1.39 1 1 0.72 1.22 56 844425 220000 1044159
F 1.39 1 1 1.12 0.84 57 851180 120000 1002706
Open workbenches
Tools for each stage in the CM process are
integrated through organisational procedures and
scripts. Gives flexibility in tool selection.
Integrated workbenches
Provide whole-process, integrated support for
configuration management. More tightly
integrated tools so easier to use. However, the
cost is less flexibility in the tools used.