软件测试方法和技术实践 - mooctest.org ·...
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
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
10
课程调查继续 –困惑与职业规划
� 软件测试这个行业发展前景怎么样?
� 软件测试的未来发展方向?是否会被AI/Dev替代?
� 产品经理、开发都比测试更有钱途?
� 软件测试在企业中不受重视,黑盒测试常被认为没有技术含量,怎么破?
� 为什么有些公司的软件测试岗薪酬低、事儿还多、Dev还一脸的不乐意?
� 软件测试哪些工作真正有意义?怎样才能快速进步?
� 软件测试职业的量化指标衡量到了中级/高级水平?
� 如何成为自动化测试人员?
� 现在软件企业需要什么样的技术人才?
20
MOOC存在的问题
① 课程不够生动、故事性不强、缺乏课堂现场感
② 注册人员多、活跃度不高
③ 工作量很大(录制、编辑、答疑、作业批阅等)
④ 作业批阅:助教 vs. 学生互评
2017/8/19
13
25
思考:自适应的学习方法
为每个人的软件测试学生度身定制
26
小结
� 充实教学团队
� 贴合学生需求,实用、简单、有效
� 内容分解为小而精单元,及时更新和优化
� 讲课技巧改进,加强互动
� 教学方式多样化,线上和线下相互补充
� 加强数据分析,及时获取学生反馈,不到改进课程
� 支撑系统的功能完善