文艺复兴以降,源远流长的科学精神和逐步形成的学术规范,使西方国家在自然科学的各个领域取得了垄断性的优势;也正是这样的传统,使美国在信息技术发展的六十多年间名家辈出、独领风骚。在商业化的进程中,美国的产业界与教育界越来越紧密地结合,计算机学科中的许多泰山北斗同时身处科研和教学的最前线,由此而产生的经典科学著作,不仅擘划了研究的范畴,还揭示了学术的源变,既遵循学术规范,又自有学者个性,其价值并不会因年月的流逝而减退。
近年,在全球信息化大潮的推动下,我国的计算机产业发展迅猛,对专业人才的需求日益迫切。这对计算机教育界和出版界都既是机遇,也是挑战;而专业教材的建设在教育战略上显得举足轻重。在我国信息技术发展时间较短的现状下,美国等发达国家在其计算机科学发展的几十年间积淀和发展的经典教材仍有许多值得借鉴之处。因此,引进一批国外优秀计算机教材将对我国计算机教育事业的发展起到积极的推动作用,也是与世界接轨、建设真正的世界一流大学的必由之路。
机械工业出版社华章公司较早意识到“出版要为教育服务”。自1998年开始,我们就将工作重点放在了遴选、移译国外优秀教材上。经过多年的不懈努力,我们与pearson,mcgraw-hill,elsevier,mit,john
wiley sons,cengage等世界著名出版公司建立了良好的合作关系,从他们现有的数百种教材中甄选出andrew
s. tanenbaum,bjarne stroustrup,brain w. kernighan,dennis
ritchie,jim gray,afred v. aho,john e. hopcroft,jeffrey d.
ullman,abraham silberschatz,william stallings,donald e. knuth,john
l. hennessy,larry l.
peterson等大师名家的一批经典作品,以“计算机科学丛书”为总称出版,供读者学习、研究及珍藏。大理石纹理的封面,也正体现了这套丛书的品位和格调。
前言
1 introduction
1.1 the software industry
1.2 software testing and quality
1.3 errors.faults and failures
1.3.1 software faults
1.3.2 software failures
1.3.3 need for testing
1.4 the role of sdecifications
1.5 overview of testing
1.5.1 testing in the development process
1.5.2 test automation
1.6 the theory of testing
1.6.1 exhaustive testing example
1.6.2 implications
1.7 when to finish testing
1.8 notes on book structure
2 principles of software testing
.2.1 dynamic and static verification
2.1.1 static verification
2.1.2 dynamic verification
2.2 black-box and white.box testing
2.2.1 errors of“omission”and“commission”
2.3 test approaches
2.3.1 black-box testing
2.3.2 white-box testing
2.3.3 fault insertion
2.4 test activities
2.4.1 analysis outputs
2.4.2 test cases
2.4.3 test data
2.4.4 test code for test proceduresl
2.5 analysis of software specifications
2.5.1 parameters
2.5.2 parameter ranges
2.5.3 equivalence partitions
2.5.4 boundary values
2.5.5 combinations of values
2.5.6 sequences of values
2.6 analysis of software components
2.6.1 control flow graphs
2.6.2 decisions and conditions
2.6.3 paths
2.6.4 data-flow testing
2.6.5 ranking
2.7 analysis of targets for fault insertion
2.7.1 offutt’s 5 sufficient mutations
2.8 test artefacts
3 unit testing
3.1 introduction
3.2 usage
3.3 black-box techniques
3.3.1 equivalence partitioningep
3.3.2 boundary value analysis fbval
3.3.3 testing combinations of inputsci
3.3.4 testing sequences of inputssior state
3.3.5 random input data fridl
3.3.6 error guessing fegl
3.4 white.box techniques
3.4.1 statement coverage fscl
3.4.2 branch coverage fbcl
3.4.3 condition coverage fccl
3.4.4 decision condition coverage fdccl
3.4.5 multiple condition coveragemcc
3.4.6 path coverage fpci
3.4.7 d—u pair coveragedup
3.5 fault insertion
3.5.1 strong mutation testingsmt
4 unit testing examples
5 static v_erification
6 testing object-oriented software
7 integration and system testing
8 software test automation
9 testing in the software process
10 advanced testing issues
a terminology
b exercises
select bibliography