当前课程知识点:软件工程与软件自动化 >  第一章 软件工程基础 >  1.4 亡羊补牢为时不晚 >  授课视频1/2

返回《软件工程与软件自动化》慕课在线视频课程列表

授课视频1/2在线视频

下一节:授课视频2/2

返回《软件工程与软件自动化》慕课在线视频列表

授课视频1/2课程教案、知识点、字幕

嗨,大家好

下面我们继续讨论软件测试

软件测试和软件需求一样

是软件整个开发过程当中

两个非常重要

但是容易被忽视的一个活动

我们强调说

软件工程里面

软件测试重要而不能忽视

大家看看这个图,就明白了

软件测试的重要活动捉虫子

这里面我们简单看一下

本次课的内容

首先软件工程里面

软件测试

我们可以把它定义为一个亡羊补牢式的概念

出厂前对软件质量的最后一次的把控

合格的出厂,不合格的返工

有的人认为测试很简单

我有个学生,是个女生,问老师

说这个,我不太喜欢编程序

她本身学的是软件工程专业

我能不能毕业了去搞测试呀

我只能呵呵了

软件测试在她心目当中

可能说就是点点鼠标

输个用户名,密码 ,点一下

对就是对,错就是错

然后写出来就OK了

软件测试不是这么简单的

软件测试工作量很大、很累、很复杂

我们说软件自动化里面的测试自动化

目前是发展最成熟的

并且是应用最广泛的

我们软件的测试是

保障软件产品质量的唯一的一个方法吗

答案肯定不是的

我们软件测试只是提高产品质量的一个办法

我们还有更多的方法

来提高我们软件产品质量

首先我来快速地过一下

软件测试一些基本的原则

第一条原则,就是避免自己测自己

我是程序员,公司里面人手不够

老板说,自己测一下自己的,就完了

不要出现这样情况

王婆卖瓜,自卖自夸

自己写的程序怎么看都好

别人写的程序怎么看都不顺眼

第二,测试用例的设计必须包括预期的输出结果

也就是说我们设计测试用例的时候

我先用人脑算一遍

如果这样一个输入

应该是一个什么样的输出

第三,也要包括无效的和不期望的输入

你不能预测到用户在什么情况下

会输入什么样的

一种你根本想象不到的一种输入

我们设计测试用例的时候要注意

有效的,设计一个

无效的,不期望的也要输入

下面这个原则有点像绕口令一样

我们来看一下

只检查程序是否做了它应该做的事

还要检查是否它做了它不该做的事

比如说有的时候,有一些软件

你说不好这软件里面会有一些什么后门啊木马

比如说,你给银行开发了一套软件

那银行敢贸然使用吗?

如果我们的一个程序员出现了一个小想法

在程序当中内置了一些小程序

这是很可怕的一件事

银行在用这个软件的时候呢

这个后门小程序呢,就会自动的把每个账号里的一分钱

汇集到他的账号上去

这不就发财了么

要彻底检查每个测试结果

避免不可重复的即兴测试

拿个鼠标没事的时候点一点

这不叫测试

测试的时候,要根据我们的测试用例

我要怎么测,按什么顺序测

输入是什么,输出是什么

检查是否通过

尽量避免这种即兴测试

下一个原则是说,一个程序当中

存在错误的概率与在这段程序当中

已经发现的错误成比例

这个是比较容易理解的

假设我们有两段程序

A段程序发现了100个错误

B段程序里面发现了10个错误

我不能说B段程序还有90个错误没发现呢

A段错误你发现完了,不是这样的,

而是说A段程序发现了100个,有可能还有900个错误没发现

B段程序呢发现了10个错误

有可能还有90个错误没发现

就是说它这个比例

发现的越多,总的错误越多

测试是一项非常复杂的

创造性的和需要高度智慧的挑战性的任务

这一点作为一个测试人员

必须要清醒地认识到

下一条规则

不能为了便于测试擅自修改程序

这是不允许的

一般情况下现在我们分工

开发人员代码提交上去,测试人员测试

测试完之后,把结果反馈回去就可以了

你不能修改人家的代码

也就是说如果开发人员自己写代码

自己测试,他测试觉得费劲的时候他就可以修改代码

当然这是如果在满足功能的情况下

我重构,让我的程序更能易于测试

这是另外一个问题

不属于擅自修改

那么测试工作呢,必须有明确的目标

就是要测试什么,是有目标的,不是即兴测试

那么要尽早地测和不断地测

尽早呢,就是说我们一旦有代码出来

我们就可以测

从更广义的来讲,测试不仅仅是对代码的测试

还是对文档的测试

对需求分析啊,设计啊这些文档

我们要进行一个检查

要检查实际上也是一种测试

下面来看一看测试里面的几个误区

第一个测试范围的问题

有的同学说了,测试

就是对代码进行测试

代码测完就没有了

另外一个同学说,对

除了代码测试里面还有一个文档测试

刚才我们提到的,就是你的分析文档啊,设计文档啊

就是要检查它是不是对的

那么除了这两点,就是源代码测试和文档测试之外

还要测什么

其实我认为更重要的是

代码与文档之间的对应

比如说我现有一段代码

对应的文档我有了

代码修改了,文档没改

或者代码改动的版本和文档改动的版本不匹配

这是一件很严重的问题

就像我们的一栋楼,盖好之后

开发商把图纸给物业了,那好了

你业主开始改造

砸了墙,砸了洞

最后呢发现你的更改之后没有到物业报批

那么将来如果出现一些消防问题

着火了,消防员来救援

根据物业提供的地图来救人的时候发现不对

路线根本就不对,是死胡同

这是很严重的问题

所以说我们要维护代码和文档的这个对应关系

是非常重要的

那代码简单吗?不简单

代码要测试,文档要测试

也就是说我们现在的测试活动已经变成了

一个新的软件开发项目

后面我们在讲到测试部分时我们会详细讨论

测试本身也是一项新的开发

比如说我对测试用例的开发

我对测试脚本的这种设计分析

还有编码和测试

当我们问学生,什么时候开始测试的时候

很多学生说,代码写完就可以测了

实际上我们说测试不仅仅是测试的执行

一个代码写完了,我可以执行测试

但是测试计划,测试用例的编写

实际是在很早就开始了

比如说我需求一旦确定

那么我可以编写测试用例

根据用户这个需求要测那个功能点

我这个测试用例就可以做出来,制定测试计划等等

测试还有一个就是说我们现在测试

不仅仅是亡羊补牢的进行检查

我们还有一种叫测试驱动开发

我用这种测试框架,测试工具

不仅仅是为了测试我这个代码是否正确

我可以来引导这个代码的编写

后面我们讨论到了测试驱动开发的时候

我们会进一步讨论

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

授课视频1/2笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。