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