《高级软件测试》教学大纲 一、课程基本信息 1、课程代码: 2、课程名称(中文):高级软件测试 课程名称(英文):Advanced topics in Software Testing 3、学时/学分:36学时/2学分 4、先修课程:软件工程 5、面向对象:软件工程专业硕士。 6、开课院(系)、教研室:软件学院 7、推荐教学参考书: 1.《软件质量保证、测试与评价》,杨根兴主编,清华大学出版社,2007 年8月。 2.《软件质量和软件测试》,[德]Dirk Huberty等著马博赵云龙译, 清华大学出版社,2003年11月。 3.《软件测试的有效方法》,[美]William E.Perry著,兰雨晴高静等 译,机械工业出版社,2004年 二、课程的性质和任务 本课程属于软件工程专业的高级专业课程,主要面向有比较扎实的软件工程 基础知识,并且具有一定的软件开发能力的硕士。 软件测试课程的目标是介绍软件测试技术的方法、技术和工具,以及软件测 试技术研究的进展。课程介绍软件测试不同阶段的技术,并对测试不同类型软件 的方法展开讨论,包括面向对象软件、组件软件、分布式软件、GU川软件和网络 软件。进一步的,变异测试、程序分析((程序流、数据流分析)也会被研究。课 程需要学生阅读大量的相关论文来获得对技术的理解。课程还要求学生通过完成 3个实际的软件测试实验项目,掌握软件测试的方法和工具。 本课程的目标是希望学生能够在了解和掌握软件测试理论与方法的基础上, 学会程序质量分析的方法,提高学生的软件综合设计与开发能力
《高级软件测试》教学大纲 一、课程基本信息 1、课程代码: 2、课程名称(中文):高级软件测试 课程名称(英文):Advanced topics in Software Testing 3、学时/学分:36 学时/2 学分 4、先修课程:软件工程 5、面向对象:软件工程专业硕士。 6、开课院(系)、教研室: 软件学院 7、推荐教学参考书: 1. 《软件质量保证、测试与评价》,杨根兴主编,清华大学出版社,2007 年 8 月。 2. 《软件质量和软件测试》,[德]Dirk Huberty 等著 马博 赵云龙 译, 清华大学出版社,2003 年 11 月。 3. 《软件测试的有效方法》,[美]William E.Perry 著, 兰雨晴 高静 等 译,机械工业出版社,2004 年 二、课程的性质和任务 本课程属于软件工程专业的高级专业课程,主要面向有比较扎实的软件工程 基础知识,并且具有一定的软件开发能力的硕士。 软件测试课程的目标是介绍软件测试技术的方法、技术和工具,以及软件测 试技术研究的进展。课程介绍软件测试不同阶段的技术,并对测试不同类型软件 的方法展开讨论,包括面向对象软件、组件软件、分布式软件、GUI 软件和网络 软件。进一步的,变异测试、程序分析(程序流、数据流分析)也会被研究。课 程需要学生阅读大量的相关论文来获得对技术的理解。课程还要求学生通过完成 3 个实际的软件测试实验项目,掌握软件测试的方法和工具。 本课程的目标是希望学生能够在了解和掌握软件测试理论与方法的基础上, 学会程序质量分析的方法,提高学生的软件综合设计与开发能力
三、教学内容和要求 软件测试的教学内容分为十部分,对不同的内容提出不同的教学要求。 (数字表示供参考的相应的学时数) 第一章软件测试的意义和目的(2) 主要内容:介绍软件测试的意义、软件测试在软件开发中的地位、软件工程中软 件测试的定义等。 阅读文献: DTesting:a roadmap,Mary Jean Harrold,Proceedings of the conference on the future of Software engineering May 2000. 2Introduction to special section on software testing,R.Hamlet,Communications of the ACM June 1988,Volume 31 Issue 6. 3 Testing:principles and practice,Stephen R.Schach,ACM Computing Surveys,(CSUR) March 1996,Volume 28 Issue 1. 4Software safety:why,what,and how,Nancy G.Leveson,ACM Computing Surveys(CSUR) June 1986,Volume 18 Issue 2. 5Validation,Verification,and Testing of Computer Software,W.Richards Adrion,Martha A. Branstad,John C.Cherniavsky,ACM Computing Surveys(CSUR)June 1982,Volume 14 Issue 2 第二章软件测试概论(4) 主要内容:介绍测试用例生成、测试验证集合、测试覆盖率等概念; 介绍测试工具:JUnit、Emma 阅读文献: D The category-partition method for specifying and generating functional tests,T.J.Ostrand,M. J.Balcer,Communications of the ACM June 1988,Volume 31 Issue 6. 2 Various documents at http://www.junit.org. 第三章测试用例生成(6) 主要内容:介绍测试用例生成的概念与方法:边界值、路径覆盖、分支覆盖、断 言测试等;
三、教学内容和要求 软件测试的教学内容分为十部分,对不同的内容提出不同的教学要求。 (数字表示供参考的相应的学时数) 第一章 软件测试的意义和目的 (2 ) 主要内容:介绍软件测试的意义、软件测试在软件开发中的地位、软件工程中软 件测试的定义等。 阅读文献: 1 Testing: a roadmap, Mary Jean Harrold, Proceedings of the conference on the future of Software engineering May 2000. 2 Introduction to special section on software testing, R. Hamlet, Communications of the ACM June 1988, Volume 31 Issue 6. 3 Testing: principles and practice, Stephen R. Schach, ACM Computing Surveys, (CSUR) March 1996, Volume 28 Issue 1. 4 Software safety: why, what, and how, Nancy G. Leveson, ACM Computing Surveys (CSUR) June 1986, Volume 18 Issue 2. 5 Validation, Verification, and Testing of Computer Software, W. Richards Adrion, Martha A. Branstad, John C. Cherniavsky, ACM Computing Surveys (CSUR) June 1982, Volume 14 Issue 2. 第二章 软件测试概论 (4) 主要内容:介绍测试用例生成、测试验证集合、测试覆盖率等概念; 介绍测试工具:JUnit、Emma 阅读文献: 1 The category-partition method for specifying and generating functional tests, T. J. Ostrand, M. J. Balcer, Communications of the ACM June 1988, Volume 31 Issue 6. 2 Various documents at http://www.junit.org. 第三章 测试用例生成 (6) 主要内容:介绍测试用例生成的概念与方法:边界值、路径覆盖、分支覆盖、断 言测试等;
介绍GU川测试的事件流模型、事件-空间等方法。 阅读文献: DAtest generation strategy for pair-wise testing,Kuo-Chung Tai;Yu Lei,Software Engineering, IEEE Transactions on,Volume:28 Issue:1,Jan.2002,Page(s):109-111. 2Predicate-based test generation for computer programs,Kuo-Chung Tai,Software Engineering,1993.Proceedings of the 15th International Conference on,1993,Page(s):267 -276 第四章面向对象测试(4) 主要内容:介绍面向对象测试测试的类测试、测试层次和方法: 介绍基于模型的测试方法: GUI测试方法; 阅读文献: D TACCLE:A Methodology for Object-Oriented Software Testing at the Class and Cluster Levels,Huo Yan Chen,T.H.Tse,T.Y.Chen,ACM Transactions on Software Engineering and Methodology,Vol.10,No.4,January 2001,Pages 56-109. 2Model-based Software Testing,Encyclopedia on Software Engineering,Wiley,2001 3 Hierarchical GUI test case generation using automated planning,Memon,A.M.;Pollack,M.E.; Soffa,M.L.,Software Engineering,IEEE Transactions on,Volume:27 Issue:2,Feb.2001, Page(s)144-155 第五章WEB软件测试(2) 主要内容:介绍网络测试的特点、种类和工具: 讨论软件测试的技术与方法。 阅读文献: DGoing Faster:Testing The Web Application Edward Hieatt and Robert Mee,IEEE SOFTWARE March/April 2002,pages 60-65. 第六章数据流测试(2) 主要内容:介绍数据流测试的定义一使用测试方法。 阅读文献: DInterprocedural data flow testing,M.Harrold,M.Soffa,ACM SIGSOFT Software
介绍 GUI 测试的事件流模型、事件-空间等方法。 阅读文献: 1 A test generation strategy for pair-wise testing, Kuo-Chung Tai; Yu Lei, Software Engineering, IEEE Transactions on, Volume: 28 Issue: 1, Jan. 2002, Page(s): 109 -111. 2 Predicate-based test generation for computer programs, Kuo-Chung Tai, Software Engineering, 1993. Proceedings of the 15th International Conference on, 1993, Page(s): 267 -276. 第四章 面向对象测试(4) 主要内容:介绍面向对象测试测试的类测试、测试层次和方法; 介绍基于模型的测试方法; GUI 测试方法; 阅读文献: 1 TACCLE: A Methodology for Object-Oriented Software Testing at the Class and Cluster Levels, Huo Yan Chen, T. H. Tse, T. Y. Chen, ACM Transactions on Software Engineering and Methodology, Vol. 10, No. 4, January 2001, Pages 56-109. 2 Model-based Software Testing, Encyclopedia on Software Engineering , Wiley, 2001 3 Hierarchical GUI test case generation using automated planning, Memon, A.M.; Pollack, M.E.; Soffa, M.L., Software Engineering, IEEE Transactions on, Volume: 27 Issue: 2, Feb. 2001, Page(s): 144 -155. 第五章 WEB 软件测试(2) 主要内容:介绍网络测试的特点、种类和工具; 讨论软件测试的技术与方法。 阅读文献: 1 Going Faster: Testing The Web Application Edward Hieatt and Robert Mee, IEEE SOFTWARE March/April 2002, pages 60-65. 第六章 数据流测试 (2) 主要内容:介绍数据流测试的定义-使用测试方法。 阅读文献: 1 Interprocedural data flow testing, M. Harrold, M. Soffa, ACM SIGSOFT Software
Engineering Notes,Proceedings of the ACM SIGSOFT '89 third symposium on Software testing,analysis,and verification November 1989,Volume 14 Issue 8. 2 An applicable family of data flow testing criteria,Frankl,P.G.;Weyuker,E.J.,Software Engineering,IEEE Transactions on,Volume:14 Issue:10,Oct.1988,Page(s):1483-1498. 第七章测试判据库(Test0 racle:2) 主要内容:介绍测试判据库的构成与原理。 阅读文献: DAutomated test oracles for GUIs,Atif M.Memon,Martha E.Pollack,Mary Lou Soffa,ACM SIGSOFT Software Engineering Notes,Proceedings of the eighth international symposium on Foundations of software engineering for twenty-first century applications,November 2000, Volume 25 Issue 6. 2 Specification-based test oracles for reactive systems,Debra J.Richardson,Stephanie LeifAha, T.Owen O'Malley,Proceedings of the 14th international conference on Software engineering June 1992 第八章测试覆盖率(4) 主要内容:介绍充分性准则、覆盖率标准及测试效率等概念与方法。 阅读文献: DSoftware unit test coverage and adequacy,Hong Zhu,Patrick A.V.Hall,John H.R.May, ACM Computing Surveys(CSUR)December 1997,Volume 29 Issue 4. 2 The evaluation of program-based software test data adequacy criteria,E.J.Weyuker, Communications of the ACM June 1988 Volume 31 Issue 6. 3Experiments on the effectiveness of dataflow-and control-flow-based test adequacy criteria, Hutchins,M.;Foster,H.;Goradia,T.;Ostrand,T.,Software Engineering,1994.Proceedings. ICSE-16.,16th International Conference on,1994,Page(s):191-200. Coverage criteria for GUI testing,Atif M.Memon,Mary Lou Soffa,Martha E.Pollack,ACM SIGSOFT Software Engineering Notes,Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT symposium on Foundations of software engineering September 2001,Volume 26 Issue 5. 第九章回归测试(2) 主要内容:介绍测试用例的维护、回归测试的效率等。 阅读文献: DAn empirical study of regression test selection techniques,Todd L.Graves,Mary Jean Harrold,Jung-Min Kim,Adam Porter,Gregg Rothermel,ACM Transactions on Software Engineering and Methodology (TOSEM)April 2001,Volume 10 Issue 2
Engineering Notes, Proceedings of the ACM SIGSOFT '89 third symposium on Software testing, analysis, and verification November 1989, Volume 14 Issue 8. 2 An applicable family of data flow testing criteria, Frankl, P.G.; Weyuker, E.J., Software Engineering, IEEE Transactions on, Volume: 14 Issue: 10, Oct. 1988, Page(s): 1483 -1498. 第七章 测试判据库(Test Oracle:2) 主要内容:介绍测试判据库的构成与原理。 阅读文献: 1 Automated test oracles for GUIs, Atif M. Memon, Martha E. Pollack, Mary Lou Soffa, ACM SIGSOFT Software Engineering Notes, Proceedings of the eighth international symposium on Foundations of software engineering for twenty-first century applications, November 2000, Volume 25 Issue 6. 2 Specification-based test oracles for reactive systems, Debra J. Richardson, Stephanie Leif Aha, T. Owen O'Malley, Proceedings of the 14th international conference on Software engineering June 1992. 第八章 测试覆盖率 (4) 主要内容:介绍充分性准则、覆盖率标准及测试效率等概念与方法。 阅读文献: 1 Software unit test coverage and adequacy, Hong Zhu, Patrick A. V. Hall, John H. R. May, ACM Computing Surveys (CSUR) December 1997, Volume 29 Issue 4. 2 The evaluation of program-based software test data adequacy criteria, E. J. Weyuker, Communications of the ACM June 1988 Volume 31 Issue 6. 3 Experiments on the effectiveness of dataflow- and control-flow-based test adequacy criteria, Hutchins, M.; Foster, H.; Goradia, T.; Ostrand, T., Software Engineering, 1994. Proceedings. ICSE-16., 16th International Conference on, 1994, Page(s): 191-200. 4 Coverage criteria for GUI testing, Atif M. Memon, Mary Lou Soffa, Martha E. Pollack, ACM SIGSOFT Software Engineering Notes, Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT symposium on Foundations of software engineering September 2001, Volume 26 Issue 5. 第九章 回归测试 (2) 主要内容:介绍测试用例的维护、回归测试的效率等。 阅读文献: 1 An empirical study of regression test selection techniques, Todd L. Graves, Mary Jean Harrold, Jung-Min Kim, Adam Porter, Gregg Rothermel, ACM Transactions on Software Engineering and Methodology (TOSEM) April 2001, Volume 10 Issue 2
第十章变异测试与故障注入(2) 主要内容:介绍变异测试(Mutation test)和故障注入的方法。 讨论变异测试的意义和改进。 阅读文献: DInvestigations of the Software Testing Coupling Effect,Jeff Offutt.ACM Transactions on Software Engineering Methodology,1(1):3-18,January 1992. 2Practical Mutation Testing,Jeff Offutt.Twelfth International Conference on Testing Computer Software,pages 99-109,Washington,DC,June 1995. 3 An Experimental Determination of Sufficient Mutant Operators,Jeff Offutt,Ammei Lee, Gregg Rothermel,Roland H.Untch,and Christian Zapf.ACM Transactions on Software Engineering Methodology,5(2):99-118,April 1996. 第十一章组件软件测试(4) 主要内容:介绍组件软件测试的特点和方法: 讨论组件软件测试技术的发展。 阅读文献: DA User Oriented Framework for Component Deployment Testing,Andrea Polini,Testing Commercial-off-the-shelf Components and Systems,pp.169-194.(ISBN:3-540-21871-8). Sami Beyeda,Volker Gruhn(Eds.).Springer,2004 2A Methodology of Component Integration Testing,Hong Zhu,in Testing Commercial-Off-The-Shelf Components and Systems,Sami Beydeda and Volker Gruhn(ed.), Springer,2005,pp239-269 四.实验(上机)内容和基本要求 本课程共有3个实验作业安排,要求学生结合所学知识与方法,课下完成3 个实验作业。 实验项目1:黑盒测试用例生成 选择具有5个模块以上、具有源码的程序,每个模块有5个以上的参数。使 用等价类划分方法生成JUnit测试用例,使用pair-wise方法减少测试用例。比 较原始和减少测试用例后的代码覆盖率
第十章 变异测试与故障注入(2) 主要内容: 介绍变异测试(Mutation test)和故障注入的方法。 讨论变异测试的意义和改进。 阅读文献: 1 Investigations of the Software Testing Coupling Effect, Jeff Offutt. ACM Transactions on Software Engineering Methodology, 1(1):3-18, January 1992. 2 Practical Mutation Testing, Jeff Offutt. Twelfth International Conference on Testing Computer Software, pages 99-109, Washington, DC, June 1995. 3 An Experimental Determination of Sufficient Mutant Operators, Jeff Offutt, Ammei Lee, Gregg Rothermel, Roland H. Untch, and Christian Zapf. ACM Transactions on Software Engineering Methodology, 5(2):99-118, April 1996. 第十一章 组件软件测试(4) 主要内容:介绍组件软件测试的特点和方法; 讨论组件软件测试技术的发展。 阅读文献: 1 A User Oriented Framework for Component Deployment Testing, Andrea Polini, Testing Commercial-off-the-shelf Components and Systems, pp. 169-194. (ISBN: 3-540-21871-8). Sami Beyeda, Volker Gruhn (Eds.). Springer, 2004 2 A Methodology of Component Integration Testing, Hong Zhu, in Testing Commercial-Off-The-Shelf Components and Systems, Sami Beydeda and Volker Gruhn (ed.), Springer, 2005, pp239-269. 四.实验(上机)内容和基本要求 本课程共有 3 个实验作业安排,要求学生结合所学知识与方法,课下完成 3 个实验作业。 实验项目 1:黑盒测试用例生成 选择具有 5 个模块以上、具有源码的程序,每个模块有 5 个以上的参数。使 用等价类划分方法生成 JUnit 测试用例,使用 pair-wise 方法减少测试用例。比 较原始和减少测试用例后的代码覆盖率
提交:5个模块的源代码、所有的JUit测试用例,并完成软件测试报告, 说明测试的方法、测试的结果。至少1页说明你在完成本作业时遇到的困难和解 决的方法。 实验项目2:软件故障注入 人工分析实验一的所有测试用例,分别修改源程序代码,使得每个测试用例 产生错误,并用/FAULT#FAILURE INDUCING CODE*/标注每一次修改。编写一 个自动工具软件,能够支持每一个故障的自动注入,并使得相应的测试用例产生 错误。 提交:修改的源程序、自动工具、故障自动注入过程的演示执行。 实验项目3:故障注入与回归测试 与其它同学交换已经注入故障的程序(不包含故障注释),选用分支覆盖、 定义/使用覆盖、等价类或pair-wise方法,生成JUnit测试用例,测试程序, 并记录所有发现的错误。制定修改方案,修改程序代码,采用回归测试方法测试 修改后的版本。 提交:测试报告、修改方案、修改后的源程序、回归测试报告。 五,对学生能力培养的要求 本课程旨在培养学生作为软件开发工程师所必备的软件质量观念和软件测 试方法的掌握。包括软件质量原则、测试的目的、测试的策略、软件测试的工具 以及软件测试项目报告和分析评估等。对于将来从事软件设计与开发工作的学生 来说,是十分必要的课程。本课程的目标是希望学生能够在进行软件开发工作时, 综合运用软件工程、软件测试的相关专业知识,设计出高质量的软件程序,并提 高学生的软件分析与设计的素养,提高学生的综合设计与开发能力。 六.其他说明(参考教材与文献、课程考核要求等) 1、课程教学网站:www.se.sjtu.edu.cn/e-learning 2、基于学业规范的要求(道德行为规范、作业规范、作业规范、试验规范等)
提交:5 个模块的源代码、所有的 JUnit 测试用例,并完成软件测试报告, 说明测试的方法、测试的结果。至少 1 页说明你在完成本作业时遇到的困难和解 决的方法。 实验项目 2:软件故障注入 人工分析实验一的所有测试用例,分别修改源程序代码,使得每个测试用例 产生错误,并用/*FAULT## FAILURE INDUCING CODE */标注每一次修改。编写一 个自动工具软件,能够支持每一个故障的自动注入,并使得相应的测试用例产生 错误。 提交:修改的源程序、自动工具、故障自动注入过程的演示执行。 实验项目 3:故障注入与回归测试 与其它同学交换已经注入故障的程序(不包含故障注释),选用分支覆盖、 定义/使用覆盖、等价类或 pair-wise 方法,生成 JUnit 测试用例,测试程序, 并记录所有发现的错误。制定修改方案,修改程序代码,采用回归测试方法测试 修改后的版本。 提交:测试报告、修改方案、修改后的源程序、回归测试报告。 五.对学生能力培养的要求 本课程旨在培养学生作为软件开发工程师所必备的软件质量观念和软件测 试方法的掌握。包括软件质量原则、测试的目的、测试的策略、软件测试的工具 以及软件测试项目报告和分析评估等。对于将来从事软件设计与开发工作的学生 来说,是十分必要的课程。本课程的目标是希望学生能够在进行软件开发工作时, 综合运用软件工程、软件测试的相关专业知识,设计出高质量的软件程序,并提 高学生的软件分析与设计的素养,提高学生的综合设计与开发能力。 六.其他说明(参考教材与文献、课程考核要求等) 1、课程教学网站:www.se.sjtu.edu.cn/e-learning 2、基于学业规范的要求(道德行为规范、作业规范、作业规范、试验规范等)
●应遵守学校《上海交通大学学生手册(本科生)》里有关学术诚实的条 例 ●上课准时;上课期间,关掉手机 3、课程成绩:实验作业占45%,每个实验作业15%: 课堂讨论占15%,包括讲演报告与讨论过程得分; 期末笔试占40%。 撰写人:胡飞 院(系)公章: 院(系)教学主管签字(盖章): 时 间:2008年12月
应遵守学校《上海交通大学学生手册(本科生)》里有关学术诚实的条 例 上课准时;上课期间,关掉手机 3、课程成绩:实验作业占 45%,每个实验作业 15%; 课堂讨论占 15%,包括讲演报告与讨论过程得分; 期末笔试占 40%。 撰写人:胡飞 院(系)公章: 院(系)教学主管签字(盖章): 时 间:2008 年 12 月