1. 特色:
1)主讲老师在软件测试领域工业界的业界实际工作经验;
2)采用“问题驱动式教学”方式,从解决问题出发,引出知识点和解决办法;
3)借助案例讲解,理论和实践联系比较好;
4)依从软件开发过程的业界实践往前推进,使学生学以致用,能够很快适应公司的工作环境;
5)软件测试也是一门实践性很强的课程,强调“做中学,学中做”,重视实验辅导,加强测试工具的使用;
6)课堂以分析问题、解决问题为主,课前学生适当预习知识,课后学生要完成基于问题的练习;
7)使学生能够系统地掌握软件测试的知识,更重要的使学生掌握一个合格测试工程师所需的技能;
8)覆盖从单元测试、功能测试、性能测试到安全性测试、易用性测试等各个方面;
9)教学内容能和业界技术同步,例如探索式测试、敏捷测试等新兴内容也会成为教学的重点;
10)会邀请业界的工程师参与课程的教学与答疑;
11)有测试主讲老师签名的课程证书。
受众:在校软件工程、计算机等专业大学生、在职的测试工程师、希望成为测试工程师的有志青年、大学该课程的年轻教师。
1)优秀证书:最终成绩超过80分(optional:处在本学期被评定的学生前20.0%);
2)合格证书:最终成绩超过60分(optional:处在本学期被评定的学生前20.1 - 70.0%);
3)需要自己申请,并缴纳证书工本费:168元
《C++程序设计》、《Java程序设计》、《软件工程》或《软件工程导论》
教材:
1) 朱少民等,《软件测试方法和技术(第3版)》,清华大学出版社,2014
2) 朱少民,《全程软件测试(第2版)》,电子工业出版社,2014
9个模块,48个主题(独立视频),全长时间 1000多分钟(25课时)
模块/问题域 | 编号 | 时间 (分) | 主题/要解决的问题 (独立视频) | 技能/解决问题 | 知识点/认知 |
开篇/序曲 (90分钟) 第1周 (10月20日~ 10月27日) | 0.1 | 9 | 课程介绍 | 全面了解本课程的特点、内容等 | 课程特点 课程的考核方式 |
0.2 | 29 | 究竟什么是软件测试? | 全面理解“软件测试” 在不同的场景能更好发挥测试的价值 | 软件测试的价值 测试与调试等区别 缺陷、错误、失效 内部质量、外部质量和使用质量 | |
0.3 | 15 | 为什么要学软件测试? | 培养质量意识 重视软件测试 | 缺陷带来的危害 软件测试是不可缺少的活动 | |
0.4 | 9.5 | 学这门课的收益? | 不局限于课程学习,更注重自己综合能力的训练 | SWEBOK测试知识体系 有哪些基本的测试技能 五大测试流派 批判性思维 | |
0.5 | 9.5 | 如何学好这门课? | 理论学习和课外实验有机地结合起来 | 同步、实践、互动与自学 testzilla.org | |
0.6 | 15 | 测试达人话测试 | 进一步理解测试的价值 更清楚如何成长为优秀的开发/测试工程师 |
| |
0.7 | 3 | 两位老师的介绍 | 了解老师,更好地和老师互动 |
| |
1. 单元测试 (9个主题, 215分钟) 第2-3周 (10月25日~ 11月10日) | 1.1 | 15 | 我是个很棒的程序员,我的代码就不需要测了吗? | 理解测试的必要性 | 人总是容易犯错误的 错误、缺陷、失效 编译与测试 测试与调试 缺陷发现越早、成本越低 |
1.2 | 20 | 给你一段简单代码,知道如何测吗? | 能针对代码实现100%语句覆盖、判定覆盖的测试 | 语句覆盖 分支覆盖/判定覆盖 验证点 测试用例 结构化(白盒)测试方法
| |
1.3 | 20 | IF判断语句再复杂一些,如何测? | 能针对代码实现条件覆盖、判定/条件覆盖、条件组合覆盖的测试 | 条件覆盖 判定/条件覆盖 条件组合覆盖 MCDC-修正判定条件覆盖 | |
1.4 | 25 | “||”写错了怎么都没发现? | 能够根据代码规范完成对代码的评审 | 代码评审 代码规范 质量模型中的内部质量 走查、同行评审 静态测试与动态测试 广义测试概念 | |
1.5 | 20 | 可以自动检查代码吗? | 会使用Checkstyle、FindBugs、SourceMonitor等工具 | 代码复杂度度量 代码分析工具 代码静态检查工具 | |
1.6 | 15 | 面对一个函数,如何测试? | 会执行单元测试 | 桩程序 驱动程序 单元测试 | |
1.7 | 25 | 绕过数据库,如何进行测试? | 能够构建mock object、fake object | Mock Fake Dummy | |
1.8 | 30 | JUnit是单元测试神器吗? | 如何使用JUnit对Java代码进行单元测试 | xUnit测试框架 JUnit 构成 JUnit 使用 | |
1.9 | 20 | 还有哪些单元测试工具吗? | 了解其它编程语言的代码测试工具 | HttpUnit、CppUnit、 PhpUnit、MS VTS等 | |
2. 持续集成测试 (3个主题, 117分钟) 第4~5周 (11月10日~ 11月17日) | 2.1 | 30 | 为什么要持续集成? | 了解不同的集成模式 持续集成(CI)的益处 CI要做好哪几件事 | 集成测试 持续集成及其测试 持续交付 |
2.2 | 35 | 如何搭建CI环境? | 能够搭建CI的环境 | Jenkins、CruiseControl SVN/Git Ant、Maven | |
2.3 | 27 | 如何自动验证Build? | 能够开发自动部署脚本 设置cron job | 自动部署 BVT-构建验证测试 自动化测试 | |
2.4 | 25 | 如何更上一层楼? | 搭建自动化测试框架 对录制的脚本进行优化 | 自动化测试框架 数据驱动脚本 关键字驱动脚本 | |
3. 功能测试 (12个主题, 270分钟) 第5-7周 (11月17日~ 12月6日) | 3.1 | 25 | 面对一个系统可以胡乱测试一通吗? | 基于上下文的思维能力 扮演用户角色进行测试的能力 | 功能测试 错误猜测法 基于使用的测试方法 基于应用场景的测试方法 基于需求的测试方法(概念) 黑盒测试方法 软件外部质量 |
3.2 | 20 | 不了解系统结构就没有测试方法了吗? | 能运用相应方法设计测试用例 能结合两种方法一起使用 | 等价类划分方法(EP) 边界值分析方法(BVA) 数据驱动测试方法 (概念) 基于输入域的测试方法(概念) | |
3.3 | 15 | 不是单个变量,多个相关因素的输入,又如何测? | 能运用相应方法设计测试用例 能优化测试用例 | 决策表方法 | |
3.4 | 20 | 自动贩卖机的程序又如何测试? | 能画出因果图 能将因果图转化为决策表 | 因果图方法 | |
3.5 | 20 | 一个在线保险销售系统如何测试? | 能正确运用合适方法优化测试组合 使用1-2个pair-wise方法的工具 | 两两组合(pair-wise)测试 正交实验法 | |
3.6 | 15 | 这个地方没改,怎么也出错了? | 基本能够运用回归测试策略
| 回归缺陷 回归测试 回归测试策略 基于风险的测试策略 | |
3.7 | 15 | 功能测试前要做什么准备? | 能够积极参与需求评审 在需求评审中能发挥一定的作用 | 需求评审 用户故事评审
| |
3.8 | 20 | 如何写出规范的测试用例? | 能够书写比较规范的测试用例 | 测试用例各种属性 测试环境 测试数据 前置条件与后置条件 期望结果 Test Suite – 测试集 | |
3.9 | 25 | 可以不写测试用例吗? | 基于ET循环(设计、执行、分析、学习)进行测试 理解什么时候采用ET比较合适 | 基于上下文驱动的测试方法 探索式测试(ET) 基于脚本的测试(ST) 敏捷测试与传统测试(概念) 测试依赖于开发 | |
3.10 | 30 | 能让ET更有章法进行吗? | 基本掌握SBTNM管理方法 能够完成session sheet
| SBTM(Session-Based Test Management) | |
3.11 | 30 | 喜欢做重复的测试吗? | 基于Selenium进行web功能的测试 | 回归测试自动化 UI功能自动化测试工具 其它功能测试工具 | |
3.12 | 25 | 如何针对移动 App进行自动化测试? | 会使用1-2个比较流行的Android App测试工具 | 移动应用测试的特点 云测试 众测 | |
4. 性能测试 (3个主题, 80分钟) 第8周 (12月7日~ 12月13日) | 4.1 | 25 | 如何验证系统的响应时间? | 能够评审系统性能指标 知道什么适合需要做性能测试 | 软件非功能特性 系统性能及其指标 性能测试 设计评审 负载模式 负载测试 |
4.2 | 30 | 如何做web的性能测试? | 能够使用JMeter完成基本的性能测试 | 性能测试过程 JMeter使用 | |
4.3 | 25 | 还想了解更多的性能测试吗? | 能够区分稳定性测试和性能测试 | 性能验证测试、部署规划测试、容量测试 压力测试 稳定性测试 | |
5. 安全性测试 (3个主题, 80分钟) 第9周 (12月14日~ 12月20日) | 5.1 | 20 | 听说过“白帽黑客”吗? | 能够识别软件产品的安全等级 针对不同的安全等级,知道要做哪些安全性测试 | 软件产品安全性等级 安全性功能 安全漏洞 安全性测试 |
5.2 | 30 | Web有哪些安全漏洞? | 了解web安全漏洞模式 | OWASP最近列出的十大安全威胁 OWASP Testing Guide | |
5.3 | 30 | 如何进行web安全性测试 | 会使用WebScarab等工具进行安全性渗透测试 | 安全性功能测试 渗透测试 Web安全性测试工具 Web安全性测试方法 | |
6. 其它非功能性测试 (2个主题, 40分钟) 第10周 (12月21日~ 12月26日) | 6.1 | 20 | 怎么不兼容了? | 掌握数据兼容性测试方法 掌握系统兼容性测试方法 | 兼容性测试 数据兼容及其测试 系统兼容及其测试 系统迁移 数据迁移 |
6.2 | 20 | 这个系统太不好用了! | 能够基于用户的体验进行测试 | 用户体验 使用质量 易用性测试 | |
7. 验收测试 (2个主题, 35分钟) 第10周 (12月21日~ 12月26日) | 7.1 | 20 | 上线前还需要做什么测试? | 理解生产环境和研发环境的差异而能正确地完成验收测试
| 验收测试 生产环境和研发环境的差异 敏捷开发中验收测试 |
7.2 | 15 | 可以进行在线测试吗? | 识别要监控的参数 软件在线测试的能力 | 在线测试(TiP) α测试与β测试 主动测试与被动测试 | |
8. 测试管理 (4个主题, 125分钟) 第11~12周 (12月27日~ 元月9日,2016) | 8.1 | 25 | 如何更好地掌控测试全局? | 完整地理解测试体系 | 测试生命周期,如W模型/TMap |
8.2 | 35 | 预则立,如何做好测试计划呢? | 基本能够写一个完整的测试计划 能够识别测试的主要风险 能够确定测试项的优先级 | 测试计划 测试需求分析 测试项 测试优先级 测试估算 测试风险 测试策略 | |
8.3 | 20 | 如何将一个Bug报告清楚? | 能够准确、清楚地报告缺陷 | Bug的基本描述 Bug严重性和优先级 缺陷来源 缺陷与质量的关系 | |
8.4 | 25 | 缺陷如何跟踪与管理? | 能够协助开发团队跟踪缺陷 通过缺陷分析,帮助开发预防缺陷 | 缺陷状态 缺陷生命周期 缺陷度量 缺陷分析 测试报告 | |
9. 总结 (2个主题, 45分钟) 第13周 (元月10日~ 元月16日) 考试 | 9.1 | 20 | 总结 | 能处理好测试周围的环境 | 静态测试与动态测试 |
9.2 | 100 | 考试 |
1) Lisa Crispin等,孙伟峰等译,敏捷软件测试:测试人员与敏捷团队的实践指南,清华大学出版社,2010
2) Glenford J.Myers ,张晓明等译,《软件测试的艺术》第3版,机械工业出版社,2013
3) Alan Pageken等,张奭等译,《微软的软件测试之道》,机械工业出版社,2009
4) James W.,《Google软件测试之道》,人民邮电出版社,2013
5) Stephen Vance, 《优质代码:软件测试的原则、实践与模式》,人民邮电出版社,2015
6) Andrew Hunt,《单元测试之道java版——使用junit》,电子工业出版社,2005
7) 王磊等,《Windows软件测试探秘》,电子工业出版社,2013
8) 赵卓,《Selenium自动化测试指南》,人民邮电出版社,2013
9) 段念,《软件性能测试过程详解与案例剖析(第2版)》,清华大学出版社,2012
10) Paco Hope,傅鑫译,《Web安全测试》,清华大学出版社,2010
11) 史亮等,《探索式测试实践之路》,电子工业出版社,2012
12) Elisabeth Hendrickson,徐毅译,《探索吧!深入理解探索式软件测试》,机械工业出版社,2014
13) 杨莉等,《软件自动化测试——入门、进阶与实战》,电子工业出版社,2012
14) Graham,D.等,朱少民等译,《自动化测试最佳实践:来自全球的经典自动化测试案例解析》,机械工业出版社,2013
15) 肖利琼,软件测试之魂:核心测试设计精解,电子工业出版社,2013
16) Matt Wynne等,《Cucumber:行为驱动开发指南》,人民邮电出版社,2013
17)... ...
这个课程主要面向的对象是谁?
答:在校计算机/软件工程专业学生、 想系统地学习软件测试的软件研发人员、软件项目经理等;
这个课程主要教学方式有哪些?
答:主要以视频+PPT讲解为主,辅之课后练习和实验,更需要学生自己主动阅读课外材料。
条件成熟时,会在主要城市举办一些现场答疑和沙龙。
这个课程在什么时间开设?
答:一般一学年开设一次,如果确实有需求,每个学期开设一次。