课程简介

Software testers do not make software; they only make them better.

软件测试是提高和保障软件质量的一种重要手段,是一项富有挑战和充满创造力的软件开发活动,同时也是任何软件从业者都必备的知识和技能。

本课程将对现代软件测试方法学体系进行系统介绍,包括软件开发过程中的测试方法、软件不同特性和方面的测试方法、针对特定应用软件的测试方法,以及一批非常实用且高效的特殊软件测试方法。在这一过程中,我们将深入探索为什么进行测试(why to test)、对什么进行测试(what to test)、什么时候进行测试(when to test)、以及怎样进行测试(how to test)等软件测试中的关键问题,并讨论软件测试领域研究和应用的最新进展和发现。不论将来是在工业界从事软件开发和测试工作,还是在学术界从事软件测试和软件质量研究,本门课程都可以作为一个很好的出发点。

基本信息

  • 上课时间:每周一 10:10 - 12:00
  • 上课地点:仙 Ⅰ-212(本学期10月8日前以线上教学方式进行)
  • 任课教师吴化尧聂长海
  • 教材:《软件测试的概念与方法》,聂长海 编著,清华大学出版社,2013年5月

目标和要求

As you can find bugs while they cannot, they should pay you.

我们希望学生能通过此课程学习,系统全面地了解软件现代测试的相关理论,方法和技术,并掌握软件测试的基本技能。在此基础上,能进一步灵活应用所学到的内容,具备在软件开发实践中「应用好一种测试方法」和「测试好一个软件」的基本能力。

基于此,本门课程的目标和要求包括以下四个方面:

  • 系统学习一套软件测试方法体系(学习)
  • 深入研究一种流行的软件测试方法(研究)
  • 测试一个真实的软件系统(实践)
  • 撰写一份完整的研究报告并做一次精彩的课堂汇报(展示)

考核方式

  • 平时成绩:20%(课堂考勤和讨论)
  • 项目报告和演讲:40%(表现优异同学将获得额外加分)
  • 期末考试:40%

课程内容

  1. Aug 30: 软件测试概论
  2. Sep 6: 软件测试概论 (cont'd)
  3. Sep 13: 白盒测试和黑盒测试
  4. Sep 20: 中秋节
  5. Sep 27: 软件开发过程中的测试方法
  6. Oct 4: 国庆节
  7. Oct 11: 软件特性及方面的测试方法
  8. Oct 18: 随机测试、自适应随机测试、组合测试
  9. Oct 25: 基于约束的测试
  10. Nov 1: 基于搜索的测试
  11. Nov 8: 变异测试
  12. Nov 15: 蜕变测试
  13. Nov 22: 有限状态机测试
  14. Nov 29: Fuzzing
  15. Dec 6: 故障注入测试
  16. Dec 13: 智能软件测试
  17. Dec 20: 复习

Slides 将在每周课程结束后更新,目前仅限南京大学校园网访问.

参考资料