软件测试基础(英文影印版)
基本信息
- 作者: (美)Paul Ammann Jeff Offutt
- 丛书名: 经典原版书库
- 出版社:机械工业出版社
- ISBN:9787111282464
- 上架时间:2009-10-20
- 出版日期:2009 年10月
- 开本:16开
- 页码:322
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 软件质量、软件测试及维护
内容简介回到顶部↑
本书采用创新方法来讲述软件测试,定义测试为将几个通用的测试准则应用于软件结构或软件模型的过程。书中融入了最新的测试技术,包括现代软件方法(如面向对象),Web应用程序和嵌入式软件。另外,本书包含了大量的实例。...
作译者回到顶部↑
目录回到顶部↑
preface.
part i overview
1 introduction
1.1 activities of a test engineer
1.1.1 testing levels based on software activity
1.1.2 beizer's testing levels based on test process maturity
1.1.3 automation of test activities
1.2 software testing limitations and terminology
1.3 coverage criteria for testing
1.3.1 infeasibility and subsumption
1.3.2 characteristics of a good coverage criterion
1.4 older software testing terminology
1.5 bibliographic notes
part 2 coverage criteria
2 graph coverage
2.1 overview
2.2 graph coverage criteria
2.2.1 structural coverage criteria
2.2.2 data flow criteria
2.2.3 subsumption relationships among graph coverage criteria
part i overview
1 introduction
1.1 activities of a test engineer
1.1.1 testing levels based on software activity
1.1.2 beizer's testing levels based on test process maturity
1.1.3 automation of test activities
1.2 software testing limitations and terminology
1.3 coverage criteria for testing
1.3.1 infeasibility and subsumption
1.3.2 characteristics of a good coverage criterion
1.4 older software testing terminology
1.5 bibliographic notes
part 2 coverage criteria
2 graph coverage
2.1 overview
2.2 graph coverage criteria
2.2.1 structural coverage criteria
2.2.2 data flow criteria
2.2.3 subsumption relationships among graph coverage criteria
前言回到顶部↑
This book presents software testing as a practical engineering activity, essential to producing highquality software. It is designed to be used as the primary textbook in either an undergraduate or graduate course on software testing, as a supplement to a general course on software engineering or data structures, and as a resource for software test engineers and developers. This book has a number of unique features: .
It organizes the complex and confusing landscape of test coverage criteria with a novel and extremely simple structure. At a technical level, software testing is based on satisfying coverage criteria. The book's central observation is that thereare few truly different coverage criteria, each of which fits easily into one of four categories: graphs, logical expressions, input space, and syntax structures. This not only simplifies testing, but it also allows a convenient and direct theoretical treatment of each category. This approach contrasts strongly with the traditional view of testing, which treats testing at each phase in the development process differently.
It is designed and written to be a textbook. The writing style is direct, it builds the concepts from the ground up with a minimum of required background, and it includes lots of examples, homework problems, and teaching materials. It provides
a balance of theory and practical application, presenting testing as a collection of objective, quantitative activities that can be measured and repeated. The theoretical concepts are presented when needed to support the practical activities
that test engineers follow.
It assumes that testing is part of a mental discipline that helps all IT professionals develop higherquality software. Testing is not an antiengineering activity, and it is not an inherently destructive process. Neither is it only for testing specialists or domain experts who know little about programming or math.
It is designed with modular, interconnecting pieces; thus it can be used in multiple courses. Most of the book requires only basic discrete math and introductory programming, and the parts that need more background are clearly marked. By using the appropriate sections, this book can support several classes, as described later in the preface.
It assumes the reader is learning to be an engineer whose goal is to produce the best possible software with the lowest possible cost.The concepts in this book are well grounded in theory, are practical, and most are currently in use.
WHY SHOULD THIS BOOK BE USED?
Not very long ago, software development companies could afford to employ programmers who could not test and testers who could not program. For most of theindustry, it was not necessary for either group to know the technical principles behind software testing or even software development. Software testing in industryhistorically has been a nontechnical activity. Industry viewed testing primarily fromthe managerial and process perspective and had limited expectations of practitioners' technical training.
As the software engineering profession matures, and as software becomes morepervasive in everyday life, there are increasingly stringent requirements for softwarereliability, maintainability, and security. Industry must respond to these changes by,among other things, improving the way software is tested. This requires increasedtechnical expertise on the part of test engineers, as well as increased emphasis ontesting by software developers. The good news is that the knowledge and technology are available and based on over 30 years of research and practice. This bookputs that knowledge into a form that students, test engineers, test managers, anddevelopers can access.
At the same time, it is relatively rare to find courses that teach testing in universities. Only a few undergraduate courses exist, almost no masters degree programsin computer science or software engineering require a course in software testing,and only a few dozen have an elective course. Not only is testing not covered as anessential part of undergraduate computer science education, most computer sciencestudents either never gain any knowledge about testing, or see only a few lecturesas part of a general course in software engineering.
The authors of this book have been teaching software testing to software engineering and computer science students for more than 15 years. Over that timewe somewhat reluctantly came to the conclusion that no one was going to writethe book we wanted to use. Rather, to get the book we wanted, we would have towrite it.
Previous testing books have presented software testing as a relatively simplesubject that relies more on process than technical understanding of how softwareis constructed, as a complicated and fractured subject that requires detailed understanding of numerous software development technologies, or as a completely theoretical subject that can be mastered only by mathematicians and theoretical computer scientists. Most books on software testing are organized around the phases ina typical software development lifecycle, an approach that has the unfortunate sideeffect of obscuring common testing themes, Finally, most testing books are written as reference books, not textbooks. A a result, only instructors with prior expertise in software testing can easily teach.the subjecL This book is accessible to instructors who are not already testilag
This book differs from other books on software testing in other important ways.Many books address managing the testing process. While this is important, it isequally important to give testers specific techniques grounded in basic theory. Thisbook provides a balance of theory and practical application. This is important information that software companies must have; however, this book focuses specifically on the technical nutsandbolts issues of designing and creating tests. Othertesting books currently on the market focus on specific techniques or activities,such as system testing or unit testing. This book is intended to be comprehensiveover the entire software development process and to cover as many techniques aspossible.
As stated previously, the motivation for this book is to support courses in software testing. Our first target was our own software testing course in our Software Engineering MS program at George Mason University. This popular electiveis taught to about 30 computer science and software engineering students everysemester. We also teach PhD seminars in software testing, industry short courseson specialized aspects, and lectures on software testing in various undergraduatecourses. Although few undergraduate courses on software testing exist, we believethat they should exist, and we expect they will in the near future. Most testing booksare not designed for classroom use. We specifically wrote this book to support ourclassroom activities, and it is no accident that the syllabus for our testing course,available on the book's Web site (www.introsoftwaretesting.com), closely followsthe table of contents for this book. ..
This book includes numerous carefully worked examples to help students andteachers alike learn the sometimes complicated concepts. The instructor's resourcesinclude highquality powerpoint slides, presentation hints, solutions to exercises,and working software. Our philosophy is that we are doing more than writing abook; we are offering our course to the community. One of our goals was to writematerial that is scholarly and true to the published research literature, but that isalso accessible to nonresearchers. Although the presentation in the book is quite abit different from the research papers that the material is derived from, the essential ideas are true to the literature. To make the text flow more smoothly, we haveremoved the references from the presentation. For those interested in the researchgenealogy, each chapter closes with a bibliographic notes section that summarizeswhere the concepts come from.
WHO SHOULD READ THIS BOOK?
Students who read and use this book will learn the fundamental principles behindsoftware testing, and how to apply these principles to produce better software,faster. They will not only become better programmers, they will also be preparedto carry out highquality testing activities for their future employers. Instructorswill be able to use this book in the classroom, even without prior practical expertise in software testing. The numerous exercises and thoughtprovoking problems,classroomready and classroomtested slides, and suggested outside activities makethis material teachable by instructors who are not already experts in software testing. Research students such as beginning PhD students will find this book to be aninvaluable resource as a starting point to the field. The theory is sound and clearlypresented, the practical applications reveal what is useful and what is not, and theadvanced reading and bibliographic notes provide pointers into the literature. Although the set of research students in software testing is a relatively small audience, we believe it is a key audience, because a common, easily achievable baselinewould reduce the effort required for research students to join the community oftesting researchers. Researchers who are already familiar with the field will find thecriteriaapproach to be novel and interesting. Some may disagree with the pedagogical approach, but we have found that the view that testing is an application of onlya few criteria to a very few software structures to be very helpful to our research.We hope that testing research in the future will draw away from searches for morecriteria to novel uses and evaluations of existing criteria.
Testers in the industry will find this book to be an invaluable collection of techniques that will help improve their testing, no matter what their current process is.The criteria presented here are intended to be used as a "toolbox" of tricks thatcan. be used to find faults. Developers who read this book will find numerous waysto improve their own software. Their selftesting activities can become more efficient and effective, and the discussions of software faults that test engineers searchfor will help developers avoid them. To paraphrase a famous parable, if you wantto teach a person to be a better fisherman, explain how and where the fish swim.Finally, managers will find this book to be a useful explanation of how clever testengineers do their job, and of how test tools work. They will be able to make moreeffective decisions regarding hiring, promotions, and purchasing tools.
It organizes the complex and confusing landscape of test coverage criteria with a novel and extremely simple structure. At a technical level, software testing is based on satisfying coverage criteria. The book's central observation is that thereare few truly different coverage criteria, each of which fits easily into one of four categories: graphs, logical expressions, input space, and syntax structures. This not only simplifies testing, but it also allows a convenient and direct theoretical treatment of each category. This approach contrasts strongly with the traditional view of testing, which treats testing at each phase in the development process differently.
It is designed and written to be a textbook. The writing style is direct, it builds the concepts from the ground up with a minimum of required background, and it includes lots of examples, homework problems, and teaching materials. It provides
a balance of theory and practical application, presenting testing as a collection of objective, quantitative activities that can be measured and repeated. The theoretical concepts are presented when needed to support the practical activities
that test engineers follow.
It assumes that testing is part of a mental discipline that helps all IT professionals develop higherquality software. Testing is not an antiengineering activity, and it is not an inherently destructive process. Neither is it only for testing specialists or domain experts who know little about programming or math.
It is designed with modular, interconnecting pieces; thus it can be used in multiple courses. Most of the book requires only basic discrete math and introductory programming, and the parts that need more background are clearly marked. By using the appropriate sections, this book can support several classes, as described later in the preface.
It assumes the reader is learning to be an engineer whose goal is to produce the best possible software with the lowest possible cost.The concepts in this book are well grounded in theory, are practical, and most are currently in use.
WHY SHOULD THIS BOOK BE USED?
Not very long ago, software development companies could afford to employ programmers who could not test and testers who could not program. For most of theindustry, it was not necessary for either group to know the technical principles behind software testing or even software development. Software testing in industryhistorically has been a nontechnical activity. Industry viewed testing primarily fromthe managerial and process perspective and had limited expectations of practitioners' technical training.
As the software engineering profession matures, and as software becomes morepervasive in everyday life, there are increasingly stringent requirements for softwarereliability, maintainability, and security. Industry must respond to these changes by,among other things, improving the way software is tested. This requires increasedtechnical expertise on the part of test engineers, as well as increased emphasis ontesting by software developers. The good news is that the knowledge and technology are available and based on over 30 years of research and practice. This bookputs that knowledge into a form that students, test engineers, test managers, anddevelopers can access.
At the same time, it is relatively rare to find courses that teach testing in universities. Only a few undergraduate courses exist, almost no masters degree programsin computer science or software engineering require a course in software testing,and only a few dozen have an elective course. Not only is testing not covered as anessential part of undergraduate computer science education, most computer sciencestudents either never gain any knowledge about testing, or see only a few lecturesas part of a general course in software engineering.
The authors of this book have been teaching software testing to software engineering and computer science students for more than 15 years. Over that timewe somewhat reluctantly came to the conclusion that no one was going to writethe book we wanted to use. Rather, to get the book we wanted, we would have towrite it.
Previous testing books have presented software testing as a relatively simplesubject that relies more on process than technical understanding of how softwareis constructed, as a complicated and fractured subject that requires detailed understanding of numerous software development technologies, or as a completely theoretical subject that can be mastered only by mathematicians and theoretical computer scientists. Most books on software testing are organized around the phases ina typical software development lifecycle, an approach that has the unfortunate sideeffect of obscuring common testing themes, Finally, most testing books are written as reference books, not textbooks. A a result, only instructors with prior expertise in software testing can easily teach.the subjecL This book is accessible to instructors who are not already testilag
This book differs from other books on software testing in other important ways.Many books address managing the testing process. While this is important, it isequally important to give testers specific techniques grounded in basic theory. Thisbook provides a balance of theory and practical application. This is important information that software companies must have; however, this book focuses specifically on the technical nutsandbolts issues of designing and creating tests. Othertesting books currently on the market focus on specific techniques or activities,such as system testing or unit testing. This book is intended to be comprehensiveover the entire software development process and to cover as many techniques aspossible.
As stated previously, the motivation for this book is to support courses in software testing. Our first target was our own software testing course in our Software Engineering MS program at George Mason University. This popular electiveis taught to about 30 computer science and software engineering students everysemester. We also teach PhD seminars in software testing, industry short courseson specialized aspects, and lectures on software testing in various undergraduatecourses. Although few undergraduate courses on software testing exist, we believethat they should exist, and we expect they will in the near future. Most testing booksare not designed for classroom use. We specifically wrote this book to support ourclassroom activities, and it is no accident that the syllabus for our testing course,available on the book's Web site (www.introsoftwaretesting.com), closely followsthe table of contents for this book. ..
This book includes numerous carefully worked examples to help students andteachers alike learn the sometimes complicated concepts. The instructor's resourcesinclude highquality powerpoint slides, presentation hints, solutions to exercises,and working software. Our philosophy is that we are doing more than writing abook; we are offering our course to the community. One of our goals was to writematerial that is scholarly and true to the published research literature, but that isalso accessible to nonresearchers. Although the presentation in the book is quite abit different from the research papers that the material is derived from, the essential ideas are true to the literature. To make the text flow more smoothly, we haveremoved the references from the presentation. For those interested in the researchgenealogy, each chapter closes with a bibliographic notes section that summarizeswhere the concepts come from.
WHO SHOULD READ THIS BOOK?
Students who read and use this book will learn the fundamental principles behindsoftware testing, and how to apply these principles to produce better software,faster. They will not only become better programmers, they will also be preparedto carry out highquality testing activities for their future employers. Instructorswill be able to use this book in the classroom, even without prior practical expertise in software testing. The numerous exercises and thoughtprovoking problems,classroomready and classroomtested slides, and suggested outside activities makethis material teachable by instructors who are not already experts in software testing. Research students such as beginning PhD students will find this book to be aninvaluable resource as a starting point to the field. The theory is sound and clearlypresented, the practical applications reveal what is useful and what is not, and theadvanced reading and bibliographic notes provide pointers into the literature. Although the set of research students in software testing is a relatively small audience, we believe it is a key audience, because a common, easily achievable baselinewould reduce the effort required for research students to join the community oftesting researchers. Researchers who are already familiar with the field will find thecriteriaapproach to be novel and interesting. Some may disagree with the pedagogical approach, but we have found that the view that testing is an application of onlya few criteria to a very few software structures to be very helpful to our research.We hope that testing research in the future will draw away from searches for morecriteria to novel uses and evaluations of existing criteria.
Testers in the industry will find this book to be an invaluable collection of techniques that will help improve their testing, no matter what their current process is.The criteria presented here are intended to be used as a "toolbox" of tricks thatcan. be used to find faults. Developers who read this book will find numerous waysto improve their own software. Their selftesting activities can become more efficient and effective, and the discussions of software faults that test engineers searchfor will help developers avoid them. To paraphrase a famous parable, if you wantto teach a person to be a better fisherman, explain how and where the fish swim.Finally, managers will find this book to be a useful explanation of how clever testengineers do their job, and of how test tools work. They will be able to make moreeffective decisions regarding hiring, promotions, and purchasing tools.
媒体评论回到顶部↑
“关于测试的书很多,但是大部分书涉及的主题范围都很窄并且讲述不详细。而Ammann和Offutt的这本书中所展示的概念和技术广泛地覆盖了业界和学术界使用的各种语言及平台,是一本全面、实用的测试书。”...
——Roger Alexander,华盛顿州立大学
——Roger Alexander,华盛顿州立大学

点击看大图



加载中...
