内 容 简 介软件测试是软件工程的一个重要分支,它对测试人员的专业知识要求极全、专业技术要求极强、专业能力要求极高,而目前企业对测试人员的要求是要有较丰富的测试经验及较强的测试工具应用能力。本书作为《软件测试大学教程》配套的实验教材,通过覆盖软件评测的各个环节和知识点,以主流的开源软件测试工具应用为基础,以实战能力培养为目的,为高等院校不同学历教育的软件工程专业和计算机相关专业开设软件测试课程提供了全方位的、并且是可行或可用的实践教学方案和实践教学平台,以及配套的实践教学案例。全书共12章,分为管理、静态分析、单元测试、GUI测试、性能测试及软件综合评测共6大部分。主要内容包括:软件缺陷管理、软件测试管理、程序理解、代码静态分析、xUnit单元测试框架、单元覆盖测试、Java GUI基础类库应用测试、Web页面测试、Gtk+用户界面测试、单元性能测试、Web应用性能测试以及软件综合评测工具等。掌握软件测试技术、构建软件测试环境、编写软件测试用例、开展软件测试工作并有效进行软件测试管理,无论是对于软件管理人员、开发人员、质量保证人员还是测试人员,都具有较强的现实意义。本书针对软件测试的实验内容全面,实验方案完整,实践环境建设可行,实验步骤及过程讲解清晰,实验案例丰富实用,可作为高等院校不同学历教育的软件工程及计算机相关专业的“软件测试实验课程”教材(如本科生、研究生,甚至高职生或高专生等),也可作为软件测试实战培训教材,同时本书也是软件开发或管理人员、测试或质量保证人员非常好的自学参考书。
软件测试是一门对工程实践要求极高,对学生动手能力要求极强的软件工程核心课程。目前许多高校不同学历教育的计算机专业或软件工程专业均开设了这门课程,并配套有大量学时的实验课程或额外配套的课程设计实践课程。 事实上,如何开展软件测试的实验或实践教学,不同的学校,不同的授课老师或实验指导老师都有着各自的高招或各自的体系,但我想这些学校或这些教师也都有着大致同样的感受或痛苦。这是因为软件测试贯穿软件工程整个软件生命周期,涉及各种软件开发技术、应用技术以及测试技术,覆盖软件各种应用领域,需要用到多种测试技术、方法和测试类型。而要建设能够让学生全面参与这些实验或实践的软件测试实验室,特别是全面配置商用软件测试工具,几乎是不可能的。首先不要说进行一次性的投入以满足数十位学生同时上机进行实验或实践的要求,就是经常性的升级维护,就会让条件优越的高校接受不了,更不要说大多数条件并不优越的高校了。 因此,本人在多年从事软件工程、软件测试以及软件质量保证的研究和多年讲授软件测试课程、指导学生进行软件测试实践的经验和体会的基础上,对软件测试实践教学进行了重大改革和创新:以主流的开源软件测试工具应用为基础,以实战能力培养为目的,有组织地开展软件测试的实践教学活动。经过多年的软件测试课程设计活动组织、实践指导和成绩考核,结果表明:学生对这种形式的实践教学反映非常好,学生参与实验和实践的热情非常高,学生经过2到3周的实践后,收获非常大、能力提高非常快,学生为实践收集或设计的案例非常丰富,特别是部分学生撰写的实践总结报告水平也非常高。为此,本人萌生了总结这几年实践教学的经验、案例和成果,编写软件测试实践教材的想法,并期望通过该教材将本人在软件测试实践教学上的经验和成果进行推广,使广大的教师和学生受益。该想法得到了学校、学院以及清华大学出版社的大力支持,并促成了本书的编写和完稿。 目前国内为软件测试理论课程配套的实验教程很少,即使有也大多是以商用软件测试工具的使用介绍为主,正如前面所述,很难用于实践教学。本书是前期出版的《软件测试大学教程》配套的实验教程,是作者在总结多年软件测试工作和软件测试理论教学及实践教学的经验、有关技术以及测试案例积累的基础上编写的。本书充分考虑了国内大多数院校办学条件不足,实验教学经费有限,无法全方位引进商用软件测试工具,无法开展软件测试实验室建设的实际情况,对国内外主流的开源软件测试工具进行全面分析、研究和优选,并经过几轮实践教学的检验,来设计本书的实验教学重点和实践能力要求。本书的实验内容之广,涉及的软件测试知识之多,以及开源软件测试工具介绍之全面,无论是对于学生学习,教师进行实验指导还是培训机构开展实战训练都是不可多得的实验教材。 本书以现代IT企业软件测试需求为背景,以主流的软件测试技术和方法为基础,以当前软件测试通常应用为典型实例,全面介绍了支持各种软件测试类型的开源软件测试工具的主要功能、应用流程及实际案例。与国内常见的软件测试实践教材重点讲授一般商用软件测试工具的方法不同,本书特色在于: ♦ 本书实验或实践内容完整、全面,涉及到测试管理、缺陷管理、代码分析、单元测试、系统测试、性能测试以及软件综合评测等重要内容,所选择的开源测试软件实践内容覆盖软件测试的各个测试阶段和各种测试类型,保证了国内许多院校在办学条件不足,实验教学经费有限,无法全方位引进商用软件测试工具的情况下,仍然能够开设软件测试实践类课程。 ♦ 本书既对软件测试基本知识以及相关的测试方法和技术进行一般性的总结或介绍,又对支撑这些方法和技术应用的开源软件测试工具进行了全面介绍,并特别突出了软件测试工具在实际测试项目中的运用,能够使学生有效地巩固所学的软件测试知识,掌握软件测试方法和技术,以提高他们的软件测试实战能力。 ♦ 本书重点给出了主流的软件测试工具如何建立测试环境,如何用于实际软件项目的测试。这种举一反三、抛砖引玉的内容设计,对高校软件测试实践类课程的开设、培训机构软件测试的实战培训以及开发人员和测试人员自学是非常有现实意义的。 ♦ 本书特别强调了软件综合评测的意义,并以南京大学研制的EASTT工具应用为实例,全面介绍了软件评测的思想和过程,有助于学生全面掌握软件评测的方法和技术,提高他们实际的软件评测能力。 ♦ 本书内容全面、条理清晰、结构严谨、可用性强,对重点、难点阐述透彻,使其即符合现代软件测试技术发展的潮流,又具有相对的稳定性,还易于剪裁或扩充,能满足各类机构软件测试实践教学的需要以及各类软件测试人员学习和实践的需要。 本书的完成得益于许多学生的积极参与。首先,我要在这里特别感谢我指导的研究生乔丽平、路翠等同学,本书的撰写和完稿花费了他们很多心血,如资料的收集、许多章节的起草、部分内容的组织、实验的完成以及图表的制作等。没有他们的积极参与,本书的完稿时间可能会受到影响。另外,本书很多内容来自于软件工程专业03至06级学生完成的软件测试课程设计实践总结报告,如03级的安文怡、李征和刘欣宇等,04级的孙建和刘茜等,05级的杨天放、时永欣、赵京超和周丰等,06级的黄飞和霍晓珍等,以及限于篇幅无法列举的其他学生,在此也一并向他们表示感谢。 本书相当部分的内容是对互联网资料进行收集、整理和改编的结果,包括软件测试专业网站、软件测试专家或工程师的博客以及软件测试人员在网上论坛的经验之谈。由于本书的所有知识点和实验内容是建立在开源软件(如开源软件测试工具)的基础上,而开源软件最大的特点就是广大开源软件爱好者的无私奉献。因此,本人在这里表示对他们的敬意和感谢。本人用到的大部分素材是有意义的,尽管他们中的很多人可能很平常——不是学者或专家,但他们从实际工作或项目中总结出的经验、体会或感想,对软件测试实践教学是很有帮助的。本人在用这些素材时,只是对它们中存在的原则性错误、语法错误和文字错误等进行了简单的修正和改编。当然,本人也要在这里表示一点遗憾,很多网上资料由于转载或引用频繁找不到原创处,在参考文献中无法标注。 最后,我要感谢我的家人,本书的撰写全部是利用这个暑期的时间完成的(“闭门造书”),没有家人的支持和照顾,本书也是很难完成的。 尽管本书是在本人长达二十几年软件工程、软件测试和软件质量保证实践经验和教学经验的基础上借鉴前人的成果,调研当前IT企业对软件测试人才能力的要求,并经过几轮软件测试实践教学的探索和总结编写的。但由于软件测试覆盖面太大,涉及领域太多,开源测试工具种类繁多、应用复杂,加之时间紧、水平有限,一定有许多不周到、不准确或存在错误之处,恳请广大读者提出批评和建议,并争取再版时修正。 北京工业大学软件学院 蔡建平 2009年8月20日 于北京工业大学