软件测试方法和技术实践 - mooctest.org ·...

14
2017/8/19 1 软件测试方法和技术实践 朱少民 Kerryzhu @tongji.edu.cn 同济大学软件学院 MOOCMassive Open Online Course)课程分享 软件测试方法和技术实践

Upload: others

Post on 08-Jul-2020

43 views

Category:

Documents


0 download

TRANSCRIPT

2017/8/19

1

软件测试方法和技术实践

朱少民[email protected]同济大学软件学院

MOOC(Massive Open Online Course)课程分享

软件测试方法和技术实践

2017/8/19

2

软件测试方法和技术实践

从课程调查谈起 – 如何学习?

� 如何入门?从哪里学起比较好?如何自学?

� 如何让没有基础的很快上手软件测试?

� 非软件专业,学习这门课需要先修什么知识?

� 学习这门课最重要的是什么,应该怎么去学才能学好?

� 想系统学习软件测试需要看哪些书?有什么好的学习书籍推荐?

� 测试如何进阶?

� 有很多机构做软件测试培训,两个月就能掌握,这个有区别吗?

� 从培训机构招来的测试靠谱吗?

2017/8/19

3

开篇和同学们讨论清楚四个问题

� 究竟什么是软件测试?

� 为什么要学软件测试?

� 如何学习这么课?

� 学这门课有哪些收益?

6

软件测试学习阶梯

背景

基本方法

技术

实践

概念

Why?What?Dev

质量缺陷…

IDBTCBT……

MBT

UTFT/PT

设计工具…

提出问题

分析问题

解决问题

思想流程

敏捷DevOps

2017/8/19

4

以问题驱动教学,授之以渔

2017/8/19 7

重点培养技能,带出知识点

1. 单元测试(9个主题,215分钟)第2-3周(10月25日~11月10日)

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

理解测试的必要性 人总是容易犯错误的错误、缺陷、失效编译与测试测试与调试缺陷发现越早、成本越低

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

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

语句覆盖分支覆盖/判定覆盖验证点测试用例结构化(白盒)测试方法

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

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

条件覆盖判定/条件覆盖条件组合覆盖MCDC-修正判定条件覆盖

… ... …… …… ……

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

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

HttpUnit、CppUnit、PhpUnit、MS VTS等

8

给出足够的参考书(资料)

a) Lisa Crispin等,孙伟峰等译,敏捷软件测试:测试人员与敏捷团队的实践指南,清华大学出版社,

2010

b) Glenford J.Myers ,张晓明等译,《软件测试的艺术》第3版,机械工业出版社,2013

c) James W.,《Google软件测试之道》,人民邮电出版社,2013

d) Andrew Hunt,《单元测试之道java版——使用junit》,电子工业出版社,2005

e) 王磊等,《Windows软件测试探秘》,电子工业出版社,2013

f) 赵卓,《Selenium自动化测试指南》,人民邮电出版社,2013

g) 段念,《软件性能测试过程详解与案例剖析(第2版)》,清华大学出版社,2012

h) Paco Hope,傅鑫译,《Web安全测试》,清华大学出版社,2010

i) 史亮等,《探索式测试实践之路》,电子工业出版社,2012

j) Elisabeth Hendrickson,徐毅译,《探索吧!深入理解探索式软件测试》,机械工业出版社,2014

k) 杨莉等,《软件自动化测试——入门、进阶与实战》,电子工业出版社,2012

l) Graham,D.等,朱少民等译,《自动化测试最佳实践:来自全球的经典自动化测试案例解析》,机械工

业出版社,2013

m) ... ...

2017/8/19

5

课程调查继续 – 测试主流知识与能力

� 测试基础知识、原理;

� 常用的、实用的方法/(开源的)工具?具体实践/优劣比较?

� 当今主流的测试知识/方式、最新的测试技术?

� 适合开发人员的测试方法、APP测试方法、白盒测试;

� 安全测试、性能测试、自动化测试、MBT、嵌入式软件测试;

� 测试工程师的需要什么能力/掌握什么方面的知识?

� 测试人员最重要的能力是什么?如何打造?

� 如何结合实际项目出发?如何提高自身的综合素质?

� 测试思想、思维;测试体系

引用最新测试素材(标准、方法和工具)

� 敏捷测试

� 持续集成测试

� 移动app及其TA框架

� 探索式测试

� SWEBOK 3.0

� 最新版教材

� … …

10

2017/8/19

6

11

课程内容剪裁与优化

12

剪裁后MOOC课程内容

� 减少内容,课时控制在25~30课时,引导学生自学

� 覆盖软件测试工作中所需的主流的、实用内容

� 按软件研发生命周期展开内容

� 重点内容在单元测试、持续集成测试、系统功能测试、

性能测试、安全性测试、自动化测试

2017/8/19

7

邀请工业界资深测试人员参与

加强主流的开源工具实践

2017/8/19

8

十八个实验

1. 单元测试JUnit 类/方法的语句/判定/条件覆盖

2. 单元测试 桩程序/驱动程序 实验

3. 单元测试JMock 实验

4. 代码覆盖率分析(JaCoCo)

5. 代码静态分析(Findbugs/PMD)

6. 持续集成环境搭建(Jenkins)

7. 自动部署脚本实验

8. 与CI集成的版本验证的自动化测试(BVT)

9. Quality Dashboard实验 SonarQube

10. 决策表/因果图实验 (BenderRBT)

11. 两两组合实验(PICT)

12. Web功能的Selenium自动化测试

13. Windows Client 自动化测试(AutoIT)

14. 移动App自动化测试( Android Appium)

15. 系统性能测试( JMeter )

16. 安全性测试 OWASP ZAP

17. MantisBT 缺陷跟踪系统

18. TestLink 测试管理环境构建

课程调查继续 –实际测试工作的问题

� 如何完成测试?实践项目中怎么操作的?(担心学习和实际脱节)

� 测试的出发点及目的?如何量化测试工作的ROI?

� 从哪些角度来测试?严谨测试都需要考虑到哪些方面?

� 有必要写完善的测试用例?如何编写、优化TC/脚本?

� 敏捷测试的优缺点以及实践中的经验教训?

� 是否有一些好的在线测试平台或者开源工具?

� 测试不通过如何解决? 寻找软件缺陷的技巧?

� 有必要考虑测试覆盖率?有什么方法来保证测试的完全覆盖呢?

� 模拟的压力测试环境是否能真正经得起真实环境下压力

� BAT公司是如何进行性能测试和安全测试的?

2017/8/19

9

回答这些问题有挑战

有必要为课程开发一个实际测试平台

testzilla.org

2017/8/19

10

课程调查继续 –困惑与职业规划

� 软件测试这个行业发展前景怎么样?

� 软件测试的未来发展方向?是否会被AI/Dev替代?

� 产品经理、开发都比测试更有钱途?

� 软件测试在企业中不受重视,黑盒测试常被认为没有技术含量,怎么破?

� 为什么有些公司的软件测试岗薪酬低、事儿还多、Dev还一脸的不乐意?

� 软件测试哪些工作真正有意义?怎样才能快速进步?

� 软件测试职业的量化指标衡量到了中级/高级水平?

� 如何成为自动化测试人员?

� 现在软件企业需要什么样的技术人才?

20

MOOC存在的问题

① 课程不够生动、故事性不强、缺乏课堂现场感

② 注册人员多、活跃度不高

③ 工作量很大(录制、编辑、答疑、作业批阅等)

④ 作业批阅:助教 vs. 学生互评

2017/8/19

11

思考:老师交替进行/结对教学

22

思考:学生组团进行线下讨论、案例分析

2017/8/19

12

思考:给出好的讨论主题

思考:每天关注讨论区

2017/8/19

13

25

思考:自适应的学习方法

为每个人的软件测试学生度身定制

26

小结

� 充实教学团队

� 贴合学生需求,实用、简单、有效

� 内容分解为小而精单元,及时更新和优化

� 讲课技巧改进,加强互动

� 教学方式多样化,线上和线下相互补充

� 加强数据分析,及时获取学生反馈,不到改进课程

� 支撑系统的功能完善

2017/8/19

14

Q & AThank you