同济大学 同济大学

软件测试方法和技术实践

所属微专业:

图片
课程概述

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

1020日~

1027日)

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

(1025日~

1110日)

1.1

15

我是个很棒的程序员,我的代码就不需要测了吗?

理解测试的必要性

人总是容易犯错误的

错误、缺陷、失效

编译与测试

测试与调试

缺陷发现越早、成本越低

1.2

20

给你一段简单代码,知道如何测吗?

能针对代码实现100%语句覆盖、判定覆盖的测试

语句覆盖

分支覆盖/判定覆盖

验证点

测试用例

结构化(白盒)测试方法

 

1.3

20

IF判断语句再复杂一些,如何测?

能针对代码实现条件覆盖、判定/条件覆盖、条件组合覆盖的测试

条件覆盖

判定/条件覆盖

条件组合覆盖

MCDC-修正判定条件覆盖

1.4

25

“||”写错了怎么都没发现?

能够根据代码规范完成对代码的评审

代码评审

代码规范

质量模型中的内部质量

走查、同行评审

静态测试与动态测试

广义测试概念

1.5

20

可以自动检查代码吗?

会使用CheckstyleFindBugsSourceMonitor等工具

代码复杂度度量

代码分析工具

代码静态检查工具

1.6

15

面对一个函数,如何测试?

会执行单元测试

桩程序

驱动程序

单元测试

1.7

25

绕过数据库,如何进行测试?

能够构建mock objectfake object

Mock

Fake

Dummy

1.8

30

JUnit是单元测试神器吗?

如何使用JUnitJava代码进行单元测试

xUnit测试框架

JUnit 构成

JUnit 使用

1.9

20

还有哪些单元测试工具吗?

了解其它编程语言的代码测试工具

HttpUnitCppUnit

PhpUnitMS VTS

2.  持续集成测试

3个主题,

117分钟)

4~5

1110日~

1117日)

2.1

30

为什么要持续集成?

了解不同的集成模式

持续集成(CI)的益处

CI要做好哪几件事

集成测试

持续集成及其测试

持续交付

2.2

35

如何搭建CI环境?

能够搭建CI的环境

JenkinsCruiseControl

SVNGit

AntMaven

2.3

27

如何自动验证Build

能够开发自动部署脚本

设置cron   job

自动部署

BVT-构建验证测试

自动化测试

2.4

25

如何更上一层楼?

搭建自动化测试框架

对录制的脚本进行优化

自动化测试框架

数据驱动脚本

关键字驱动脚本

3.  功能测试

12个主题,

270分钟)

5-7

1117日~

126日)

3.1

25

面对一个系统可以胡乱测试一通吗?

基于上下文的思维能力

扮演用户角色进行测试的能力

功能测试

错误猜测法

基于使用的测试方法

基于应用场景的测试方法

基于需求的测试方法(概念)

黑盒测试方法

软件外部质量

3.2

20

不了解系统结构就没有测试方法了吗?

能运用相应方法设计测试用例

能结合两种方法一起使用

等价类划分方法(EP

边界值分析方法(BVA

数据驱动测试方法 (概念)

基于输入域的测试方法(概念)

3.3

15

不是单个变量,多个相关因素的输入,又如何测?

能运用相应方法设计测试用例

能优化测试用例

决策表方法

3.4

20

自动贩卖机的程序又如何测试?

能画出因果图

能将因果图转化为决策表

因果图方法

3.5

20

一个在线保险销售系统如何测试?

能正确运用合适方法优化测试组合

使用1-2pair-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

 

SBTMSession-Based   Test Management

3.11

30

喜欢做重复的测试吗?

基于Selenium进行web功能的测试

回归测试自动化

UI功能自动化测试工具

其它功能测试工具

3.12

25

如何针对移动 App进行自动化测试?

会使用1-2个比较流行的Android App测试工具

移动应用测试的特点

云测试

众测

4.  性能测试

3个主题,

80分钟)

8

(127日~

1213日)

4.1

25

如何验证系统的响应时间?

能够评审系统性能指标

知道什么适合需要做性能测试

软件非功能特性

系统性能及其指标

性能测试

设计评审

负载模式

负载测试

4.2

30

如何做web的性能测试?

能够使用JMeter完成基本的性能测试

性能测试过程

JMeter使用

4.3

25

还想了解更多的性能测试吗?

能够区分稳定性测试和性能测试

性能验证测试、部署规划测试、容量测试

压力测试

稳定性测试

5.  安全性测试

3个主题,

80分钟)

第9

1214日~

1220日)

5.1

20

听说过白帽黑客吗?

能够识别软件产品的安全等级

针对不同的安全等级,知道要做哪些安全性测试

软件产品安全性等级

安全性功能

安全漏洞

安全性测试

5.2

30

Web有哪些安全漏洞?

了解web安全漏洞模式

OWASP最近列出的十大安全威胁

OWASP Testing Guide

5.3

30

如何进行web安全性测试

会使用WebScarab等工具进行安全性渗透测试

安全性功能测试

渗透测试

Web安全性测试工具

Web安全性测试方法

6.  其它非功能性测试

2个主题,

40分钟)

10

1221日~

1226日)

6.1

20

怎么不兼容了?

掌握数据兼容性测试方法

掌握系统兼容性测试方法

兼容性测试

数据兼容及其测试

系统兼容及其测试

系统迁移

数据迁移

6.2

20

这个系统太不好用了!

能够基于用户的体验进行测试

用户体验

使用质量

易用性测试

7.  验收测试

2个主题,

35分钟)

10

1221日~

1226日)

7.1

20

上线前还需要做什么测试?

理解生产环境和研发环境的差异而能正确地完成验收测试

 

验收测试

生产环境和研发环境的差异

敏捷开发中验收测试

7.2

15

可以进行在线测试吗?

识别要监控的参数

软件在线测试的能力

在线测试(TiP

α测试与β测试

主动测试与被动测试

8.  测试管理

4个主题,

 125分钟)

11~12周

(1227日~

9日,2016)

8.1

25

如何更好地掌控测试全局?

完整地理解测试体系
 
能理解当前所处的阶段
 
协助团队做好测试管理和测试改进

测试生命周期,如W模型/TMap
 
测试级别
 
测试类型
 
过程改进,如TMMi/TPI

8.2

35

预则立,如何做好测试计划呢?

基本能够写一个完整的测试计划

能够识别测试的主要风险

能够确定测试项的优先级

测试计划

测试需求分析

测试项

测试优先级

测试估算

测试风险

测试策略

8.3

20

如何将一个Bug报告清楚?

能够准确、清楚地报告缺陷

Bug的基本描述

Bug严重性和优先级

缺陷来源

缺陷与质量的关系

8.4

25

缺陷如何跟踪与管理?

能够协助开发团队跟踪缺陷

通过缺陷分析,帮助开发预防缺陷

缺陷状态

缺陷生命周期

缺陷度量

缺陷分析

测试报告

9.  总结

2个主题,

45分钟)

13

月10日~

16日)

 考试

9.1

20

总结

能处理好测试周围的环境
 
客观辩证地理解测试方式和方法
 
能够因地制宜采用正确的测试方式和方法

静态测试与动态测试
 
黑盒测试与白盒测试
 
手工测试与自动化测试
  ET
ST
 
测试与敏捷测试
 
发与测试关
 
测试QA

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)... ...

常见问题
  1. 这个课程主要面向的对象是谁?

    答:在校计算机/软件工程专业学生、 想系统地学习软件测试的软件研发人员、软件项目经理等; 

  2. 这个课程主要教学方式有哪些?

    答:主要以视频+PPT讲解为主,辅之课后练习和实验,更需要学生自己主动阅读课外材料。

    条件成熟时,会在主要城市举办一些现场答疑和沙龙。

  3. 这个课程在什么时间开设?

    答:一般一学年开设一次,如果确实有需求,每个学期开设一次。