当前课程知识点:软件工程 > 第13章 软件系统测试 > 13.3 软件功能测试 > 讲课视频
前面讲过
功能测试是软件测试中
工作量最大的一项工作
它是从用户的角度
进行功能验证
以确认每一个功能
是否能够正常使用
界面 数据 操作 逻辑和接口
这些都是功能测试需要考虑的
主要方面
这里我们简单地列出一些常用的
功能测试的检查项目
功能测试
主要采用黑盒测试方法
它是结合测试内容
对功能进行测试
同时在测试的过程中
对用户需求 设计文档
和使用手册进行检查
设计测试用例
要求有代表性和典型性
尽可能地发现更多的系统弱点
除了正确的输入之外
还要考虑错误或异常的输入
要考虑用户实际使用的各种场景
这是前一讲介绍的
测试用例文档的示例
它主要包括
测试环境 测试步骤
输入数据和预期结果等内容
我们在课程的第4章
介绍过等价类分析方法
这是一种典型的黑盒测试方法
它是把程序中
所有可能的输入数据
划分成若干个等价类
然后从每个等价类中
选取具有代表性的数据
作为测试用例
测试用例
应该由有效等价类
和无效等价类的代表组成
边界值分析
是对输入或输出的边界值
进行测试的一种方法
通常是作为等价类划分法的
一个补充
它的测试用例
来自于等价类的边界
场景法
也是一种常用的功能测试方法
主要是根据业务流程
生成一系列业务场景
再对应业务场景
设计出相应的测试用例
从而发现需求和实现过程中
存在的问题
现在我们用一个
ATM取款的例子来说明一下
如何使用场景法设计测试用例
大家应该对ATM取款比较熟悉
正常情况下
用户把银行卡插入ATM机中
如果银行卡是合法的
ATM机就会提示用户
输入银行卡的密码
如果密码正确
而且取款金额符合要求
那么ATM机
就点钞并且送出给用户
这样用户就可以成功取款
设计测试用例的第一步
是根据需求说明
描述出系统的基本流
以及各项备选流
其中基本流
代表正常的业务流程
备选流
代表一些失败或者意外的情况
在ATM取款这个例子中
正常流程就是刚才所说的
成功取款的过程
但是实际操作时
还有可能出现一些意外情况
比如说
ATM机器里面没有现金
或者现金不足
银行卡的密码输入有误
以及银行账户的余额不足等
这些都是属于备选流
第二步
根据基本流和各种备选流
我们可以生成不同的场景
这里列出了ATM取款的
各种场景
包括成功取款 ATM没有现金
或者现金不足
银行卡的密码有误
一种是还没有达到最大的输入次数
一种是达到了最大的输入次数
账户不存在
以及账户余额不足
第三步
对每一个场景
生成相应的测试用例
最后对生成的所有测试用例
进行检查
去除多余的测试用例
在测试用例确定之后
对每一个测试用例
选取合适的测试数据
在这里我们给出了
ATM取款的部分测试用例
大家应该都在网上买过图书
结合刚才介绍的场景法
课后可以试着设计
当当网选购图书功能的测试用例
另外 错误推测法
也是一种常用的方法
我们可以根据经验或者直觉
推测程序中可能存在的
各种错误
从而有针对性地
编写检查这些错误的测试用例
Web应用系统
涉及到比较复杂的硬件
软件 网络和业务逻辑
相应的测试
也需要考虑更多的环节
一个Web应用系统
通常需要服务于广大的用户群体
它本身只需要一个服务器端
但是需要通过各种各样的客户端
来满足不同用户的要求
它的主要功能是使用HTML
JavaScript等语言
来表示文本 图形 音频
视频的内容展现给用户
具有持续演化和及时性的特点
并且要求有良好的感观
和一定的安全保障
Web应用功能测试
主要是用来检测
Web应用软件
是否实现了预期的功能
对于网页来说
主要包括内容测试 链接测试
表单测试和Cookies测试
网站测试
是在网页测试的基础上进行
具体包括特定功能的测试
数据库的测试和设计语言测试等
下面我们来简单介绍
这些测试的基本含义
内容测试主要是检测
Web应用网页提供的信息
具体包括正确性
准确性和相关性三个方面
正确性是指信息要是真实可靠
避免出现虚假内容
准确性
是指网页的文字表述
要符合语法逻辑
没有拼写错误
测试人员需要检查
网页面内容的文字表达
是否恰当
样式看起来是否舒服
相关性
是指能否在当前网页
找到与浏览信息相关的信息列表
或者入口
有时网页上的图片
还对应着文字标签
当用户把鼠标
移动到图片上的时候
会弹出相关的文字说明
这是当当网搜索图书的页面
我们进行内容测试时
要检查两个部分
第一 是对于指定的搜索关键字
比如说软件工程
检查是否列出
含有软件工程名词的图书
第二是对于图书封面
当鼠标停留或滑过封面的图片时
应该显示相应的商品名称
网页上的链接
可以使用户从一个页面
浏览到另一个页面
链接测试
主要是检查三个方面的问题
第一用户点击链接
是否可以顺利打开
所要浏览的内容
第二所要链接的页面是否存在
第三要保证系统中
没有孤立的页面
所谓孤立页面
就是没有任何链接指向的页面
链接测试
可以手动进行
也可以用工具自动检查
这是某大学网络学堂应用的首页
右下角的两个链接页面
就是不存在的
当用户向Web应用系统
提交信息的时候
就需要使用表单操作
表单测试
是模拟表单提交过程
检测其准确性
确保提交信息
在整个过程中是正确的
表单测试主要考虑以下方面
表单的提交应该模拟用户的提交
以便验证是否完成了预期的功能
要测试提交操作的完整性
检查提交给服务器的信息
是否正确
要验证数据的正确性
以及异常处理的能力
在测试表单时
会涉及到数据校验的问题
需要根据给定的规则
对用户的输入进行校验
这是一个表单的例子
用户填写个人信息
提交之后
可以申请国航会员
大家可以考虑一下
如何进行测试
用户在访问网站的时候
Web服务器
会将一小部分信息
存放在客户端的计算机上
Cookie可以把用户
在网站上的输入信息
或者是一些选择都记录下来
当用户再一次访问网站的时候
Web应用程序
就可以直接读取
Cookie包含的信息
那么如何对Cookie进行测试呢
这是新浪微博的登录页面
我们在做cookie测试时
可能需要检查下面的情况
比如说 是否有Cookie记录
登陆成功之后
这个记录是不是有问题
Cookie信息是否进行加密
存放路径是否正确
如果浏览器设置为
不保存Cookie
那么关闭浏览器之后
检查Cookie是否自动删除
要检查Cookie的时效
在有效时间里是否自动登陆
到期之后是否自动从本地删除
登陆状态是否自动退出
用户登陆之后
再手动删除Cookie
或者用户修改密码之后
再次登陆
检查是否退出自动登陆
测试人员需要对Web网站
特定的功能需求进行验证
需要强调的是
应该是从用户实际的需要
而不是从产品本身呈现的
进行评判
数据库
是Web应用中的重要部分
一般的数据库错误
主要是由于用户提交错误的
表单信息
或者程序设计本身的问题引起的
测试人员
在了解数据库结构
和设计内容之后
可以使用破坏性手段
或者在并发环境下
来检查数据的完整性和一致性
设计语言版本的不同
也会引起客户端或服务器端
比较严重的问题
所以应用程序
要在不同的版本上进行验证
最后 兼容性测试也非常关键
我们需要测试
不同的操作系统平台
浏览器 显示分辨率
以及打印机等外部设备
-1.1 软件无处不在
--讲课视频
-1.2 软件的本质特性
--讲授视频
-1.3 软件工程的产生与发展
--讲授视频
-1.4 软件工程的基本概念
--讲授视频
-1.5 软件质量实现
--讲授视频
-1.6 业界人士谈软件工程
-测验题--作业
-讨论题
--讨论题
-作业题
--第一张 作业题
-2.1 编程过程与规范
--讲课视频
-2.2 良好的编程实践
--讲课视频
-2.3 Python集成开发环境
--讲课视频
-2.4 代码静态检查
--讲课视频
-2.5 代码性能分析
--讲课视频
-2.6 结对编程实践
--讲课视频
-2.7 刘贺谈软件工程
--讲课视频
--讨论
-测验题--作业
-作业题
--第二章 作业题
-3.1 单元测试概述
--讲课视频
-3.2 黑盒测试方法
--黑盒测试方法
-3.3 白盒测试方法
--基本概念
--代码覆盖标准
--基本路径测试
-3.4 单元测试工具
--单元测试工具
--html
-测验题--作业
-作业题
--第三章 作业题
--作业题附件
-4.1 软件过程
--讲课视频
-4.2 软件过程模型
--讲课视频
-4.3 敏捷开发过程
--讲课视频
-4.4 微软公司开发过程
--邹欣经理自我介绍
--微软开发过程之一
--微软开发过程之二
-测验题--作业
-5.1 团队组织与管理
--讲课视频
-5.2 项目沟通管理
--讲课视频
-5.3 软件项目计划
--讲课视频
-5.4 软件项目估算
--讲课视频
-测验题--作业
-讨论题
--讨论
-6.1 敏捷开发之Scrum
-- 敏捷开发之Scrum
--html
-6.2 用户故事与估算
--讲课视频
-6.3 团队协作工具Tower
-6.4 配置管理
--讲课视频
-6.5 配置管理工具Git
--讲课视频
-测验题--作业
-作业题--作业
-7.1 需求工程师
--讲课视频
-7.2 需求定义
--讲课视频
-7.3 需求的类型
--讲课视频
--讲课视频(2)
-7.4 需求工程过程
--讲课视频
-7.5 需求的主要来源
--讲课视频
-7.6 需求获取技术
--讲课视频
--讲课视频二
--讲课视频三
-7.7 撰写需求文档
--讲课视频
-测验题--作业
-讨论题
--讨论
-8.1 用例建模概念
--讲课视频
-8.2 用例建模过程
--讲课视频
-8.3 用例建模精讲
--讲课视频
-8.4 建模工具介绍
--讲课视频
-8.5 微信抢票应用案例
--讲课视频
-测验题--作业
-讨论题
--讨论
-9.1 面向对象分析
--讲课视频
-9.2 CRC卡片分拣法
--讲课视频-1
--讲课视频-2
-9.3 面向对象设计
--讲课视频-1
--讲课视频-2
-9.4 类图建模
--讲课视频-1
--讲课视频-2
-第9章 面向对象分析与设计--测验题
-讨论题
--讨论
-10.1 顺序图概念
--讲课视频
-10.2 顺序图建模
--讲课视频
-10.3 顺序图风格
--讲义视频
-10.4 状态建模
--讲课视频
-10.5 状态图
--讲课视频
-10.6 状态图精讲
--讲义视频
-测验题--作业
-讨论题
--讨论
-11.1 软件体系结构概念
--讲授视频
-11.2 软件设计原则
--讲授视频
-11.3 软件体系结构风格(一)
--讲授视频
-11.4 软件体系结构风格(二)
--讲授视频
-11.5 软件体系结构风格(三)
--讲授视频
-11.6 软件设计过程
--讲授视频
-11.7 Web系统架构设计
--讲授视频
-11.8 数据库选择策略
--讲授视频
-测验题--作业
-作业题
--html
--html
--html
-作业题--作业
-12.1 交互设计概述
--讲授视频
-12.2 交互设计目标
--讲授视频
-12.3 GUI设计原则
--讲课视频
-12.4 KLM效率模型
--Video
-12.5 Fitts定律
--讲授视频
-12.6 交互设计过程
--讲授视频
-测验题--作业
-13.1 软件测试概念
--讲课视频
-13.2 软件测试类型
--讲课视频
-13.3 软件功能测试
--讲课视频
-13.4 软件性能测试
--讲课视频
-测验题--作业
-14.1 软件部署与交付
--讲课视频
-14.2 软件演化与维护
--讲课视频
-测验题--作业
-第一部分:基础知识
-第二部分:编程与测试(选做)