4.4 L-微软记事本功能测试2
Do curso por Universidade de Nanquim
软件测试 (Software Testing)
从认识和理解软件Bug开始,介绍软件测试的基本理论,阐述软件测试设计的多样性原理。基于多样性原理,介绍白盒测试方法和黑盒测试,具体包括随机测试、等价类测试、控制流测试、数据流测试等;邀请业界专家讲解功能测试、性能测试、移动应用测试技术。
Na lição
软件测试实践
本节主要讲解功能测试、性能测试和移动应用测试。功能测试以微软记事本为例进行探索测试讲解,介绍华三的测试案例。性能测试以趋势、淘宝和华三为例进行讲解。移动应用测试以百度和趋势为例进行讲解。
Conheça os instrutores
Zhenyu Chen
Associate Professor
Software Institute
那么再回到测试这个功能的
基本的角度上来看呢
它可以打开什么
它可以打开文本文件
还可以打开所有的文件
那就说明
它什么文件都可以打开
那么它能不能打开
二进制文件呢
我们可以测试一下
比如说在这个文件里面
我们把 Notepad 拷贝过来
好 拷来了
它出现在这个菜单上
那么我们能不能
让 Notepad 来打开它自己呢
哦 不可以
这个方式不成功
那还有一种方式
可见 Notepad
是可以打开二进制文件的
那么这个时候呢
我们通过刚才的
这个操作呢
我们就想到了几点
首先 Notepad
同时呢
还可以使用拖曳文件的方式
把它拖进去
可以是文本文件
当它是文本文件的时候呢
编码又会成为
一个很重要的因素
有没有中文
有没有东亚语言字符集
有没有西欧的一些语言字符集
都可以考虑
基本上建立了这个
它大致的创建文件
打开文件 保存文件的
一个功能列表
那么还可以进一步的测试
进一步测试呢
对于这个windows上面的
软件而言呢
菜单是个很好的点
我们可以看看它菜单里面
都有什么样的功能
page setup
也就是页面设置
打开页面设置呢
有更多的功能
但是基本上可以看得出
它是个打印的附属功能
所以我们可以把它放在打印下面
那么打印呢
实际上是一个平台相关的功能
往往依赖于打印机
对打印机的依赖很强
所以在这个时候呢
就可能需要
从硬件的角度进行考虑
有可能在这个点上面
需要准备一些打印机
或者准备一些
不同类型的打印机
那么具体而言呢
打印机又可以分为
所谓的这个物理打印机
就是physical
比如说一些软件安装之后呢
它会在操作系统中
虚拟出打印机
比如说你把这个文档
打印到这个虚拟打印机上的时候
它会在操作系统里面
生成一个PDF文件
或者XPS文件
那么这两种都要考虑
这些功能就是一些
我们说每一个点
都要去覆盖的
我们因为今天受于时间限制
我们不能一一去介绍
但通常很重要的呢就是说
我们把一些大的点记录下来
比如说编辑菜单底下的东西
需要测试
还有呢最常见的就是
拷贝 剪切和粘贴
那么这个时候呢
就不能够仅仅的考虑
Notepad
还要考虑它的接口
就是说它实际上
和操作系统的接口
那么操作系统
可以通过剪贴板
将来自于其他程序的数据
放入这个剪贴板
也可以让剪贴板中的数据
通过剪贴板
放到其他程序当中
那么就要考虑
是其他程序吗
比如说画图板
WORD文档
PPT文档等等
那么它的目标是什么
目标可以是剪贴板
也可以是其他的软件
是图片型吗 是文本型吗
刚才的二进制文件打开之后
里面的内容可以剪切粘贴吗
这需要
这就是剪贴板测试
所需要考虑的一些基本的点
输入的话有几个点
首先普通的输入
还有一个呢
就是基于输入法的输入
还有一个
很多人输入的时候
是不使用鼠标的
是仅依赖于键盘的
仅依赖于键盘可以吗
我只使用键盘
可以很好的操作
这个记事本软件吗
问自己这样的问题
然后来指导这样的测试
对于一个这个常见的测试点而言
就是使用一个非常长的行
那么可以基本上把
format 的菜单
和view菜单都统一在一起
认为它都是一种视图
包括 view help
和 about Notepad
这里有link 要点一下
基本上呢功能漫游
或者说是这种功能列表
里面任何一个可以点击的东西
都要去点击
可以输入的地方都要去输入
可以改变的地方都要去改变
这样子把所有的功能
都要试一遍 都要走一遍
做到心中有数
那么这样子呢
我们就基本上建立了
写字板的初始的功能列表
它还只是一个非常简单的
非常初步的一个列表
因为它有很多点
我们可以进一步的展开
很多内容可以进一步的去探索
那为什么说它是一个
可扩展的测试设计框架呢
因为当我们做过一个
快速的测试之后
建立这么一个简单的列表
那么实际上就已经梳理出了
整个测试对象的
整体上的模型
那么下面
我可以对于某一个局部
再做深入的测试
比如说我单独测试
保存功能的时候
我们可以进行
很多的大量的测试
进一步的丰富
它的某一个局部
所以它是一个可以持续扩展
不停扩展
持续丰富的这样一个框架
那么为什么说
它提供了丰富的这个测试目标呢
因为当你说
我们说要做一个
完整的回归测试的时候
这上面的每一个点
我们都要去测试
也许说
我今天说我是资源不够了
我没有办法完全测完
但这个基本上
提供了一个测试覆盖的
一个蓝图
我们可以选择我认为
值得测试的地方
那么这里的重点是
我是基于一个蓝图
进行深入思考以后
得到的一个小的子集
而不是随意挑选的一个子集
最后呢
它为什么是提供了简洁的形式
提供了丰富的内容呢
因为它的形式非常简洁
只要寥寥数笔
就勾勒出了这个程序的
这个整体的模型
而且它本身的这种层次结构
就包含着寓意
包含着功能的隶属关系
那么在未来呢
我们可以持续地丰富
这个功能列表
那么在使用的时候呢
它大概有两种方式
第一种呢
就是将功能列表
视作为覆盖率指南
逐个检查每个功能
这是一种测试策略
还有一种测试策略呢
是综合功能列表中的
多个元素
来测试功能的协作
实际上刚才我们
已经有这么一点意思了
我们创建了一个文本文件
在里面不停地输入 操作 保存
那么如果做更长流程的测试
我们现在就可以考虑 打印
考虑从其他的程序
比如说IE WORD文档中
粘贴文档进来
就始终从一个长流程的测试
来覆盖这当中所有的点
在这个过程中呢
我们只使用一个
或者说始终打开这样一个文档
通过一个测试来覆盖创建文件
打开文件 保存 打印 编辑
等等的功能
这样长流程的测试呢
往往能够发现一些
单独的测试所不能发现的问题
往往能够暴露出一些
用户在长流程的操作当中
在真实环境中