热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

黑盒测试用例设计-等价类设计方法(三)

二、设计方法世界上不存在一组黑盒测试用例能将软件逻辑测试完全,就像不存在没有bug的软件一样。我们不可能进行穷举测试,为了保证软件产品的敏捷开发、快速迭代和通过,至少测试不能给敏捷开

二、设计方法

       世界上不存在一组黑盒测试用例能将软件逻辑测试完全,就像不存在没有bug的软件一样。我们不可能进行穷举测试,为了保证软件产品的敏捷开发、快速迭代和通过,至少测试不能给敏捷开发拖后腿,就必须要从大量的可测数据中精选出有代表性的测试数据来安排测试。

       什么是测试用例:引自清华大学出版社出版的《软件评测是教程》中解释:“所谓的测试用例设计就是将软件测试的行为活动,作一个科学的组织归纳。”

       ·测试用例的好处有:

(1)    将测试行为转换为可管理的模式,将其量化有助于管理层掌握测试过程;

(2)    在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率;

(3)    测试用例的执行令软件测试的实施重点突出、目的明确;

(4)    在软件版本更新后,只需要修正少量测试用例,配合敏捷开发;

(5)    便于验证变更。测试用例是设计一个操作,使软件产品在此操作下可得到预期结果。如此用例发现bug,经过提交至跟踪管理系统及开发同事解决问题后,使用同一个用例进行变更验证,确保该bug已修改完成。

       尽量避免测试的随意性。软件测试是有组织、有计划、有步骤的活动,要严格按照测试计划进行,要避免测试的随意性。

       ·具体黑盒测试用例设计方法包括:

已掌握:等价类划分方法、边界值分析方法、错误推测方法——结合实践讲解。

已理解:因果图方法、判定表驱动方法、正交试验设计法、场景法——讲解原理。

未掌握:功能图法(状态迁移图,流程法)——暂不讲解。

1.等价类划分方法         

       等价类是集合中的概念,我们理解为选取每类的代表元素来降低问题的复杂度,等价类划分就是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。同一类中的用例发现bug的能力是一致的,即测试某等价类的代表值就等于对这一类其他值的测试。等价类划分的目标是在仍然足以满足软件测试需求的前提下,把可能的测试用例组合缩减到最小。仔细阅读需求规格说明书的各项需求,特别是功能需求。把说明中对输入的要求和输出的要求加以分解。

(1)   划分等价类和列出等价类表

       等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。等价类的划分答案不唯一。等价类划分有两种不同的情况:有效等价类和无效等价类。

       有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据结构的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

       无效等价类:指对于程序的规格说明来说是违法的输入数据结构的集合。利用无效等价类可检验程序是否可以经受意外的考验。

设计原则:

①    1+2在输入条件规定了取值范围,取一个有效等价类和两个无效等价类。例如:新建联系人姓名要求字符长度1~980个中文字符,有效等价类取500,无效等价类取0和981。

②    1+1在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,取一个有效等价类和一个无效等价类。例如:更改SIM卡PIN码时输入旧SIM卡PIN码,有效等价类为输入正确密码,无效等价类为输入错误密码。

③    1+1在输入条件是一个布尔量的情况下,取一个有效等价类和一个无效等价类。例如:新建联系人头像,有效等价类为拍照确认,无效等价类为拍照取消。

④    n+1在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。例如:将本地图库中的图片设置为联系人头像,有效等价类有jpg/gif/png/bmp格式的图片,无效等价类有raw格式的图片。

⑤    1+n在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如:联系人添加电子邮件,有效等价类为“注册时的用户名@提供邮箱注册的网站域名地址”,无效等价类为各种违法字符串组合。

等价类确立后,建立等价类表,如下所示:

(2)   生成测试用例:

①    为每个等价类规定一个唯一的编号;

②    设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖;

③    设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使得所有无效等价类均被覆盖。   

       感兴趣的同学可以进一步查看等价类划分法例题:

(3)   点评:

①    等价类测试比较适用于输入数据以离散值区间和集合定义的函数;

②    不论系统是否是应用强类型语言编写,进行健壮形式的测试是非常有必要;

③    当输入变量之间存在依赖关系,等价类测试会产生很多“错误”用例;

④    等价类的确定是不确定的,有时是不完美的;

⑤    当与其他测试技术相结合时,等价类测试可以得到加强和补充


推荐阅读
  • 在众多不为人知的软件中,这些工具凭借其卓越的功能和高效的性能脱颖而出。本文将为您详细介绍其中八款精品软件,帮助您提高工作效率。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 卷积神经网络(CNN)基础理论与架构解析
    本文介绍了卷积神经网络(CNN)的基本概念、常见结构及其各层的功能。重点讨论了LeNet-5、AlexNet、ZFNet、VGGNet和ResNet等经典模型,并详细解释了输入层、卷积层、激活层、池化层和全连接层的工作原理及优化方法。 ... [详细]
  • 本文探讨了在UC浏览器中调用分享面板后,图片无法正常显示的问题,并提供了详细的解决方法和代码示例。 ... [详细]
  • 提升Tumblr爬虫效率与功能
    本文介绍了对之前开发的Tumblr爬虫脚本进行升级,整合了两个脚本的功能,实现了自动分页爬取博客内容,并支持配置文件以下载多个博客的不同格式文件。此外,还优化了图片下载逻辑。 ... [详细]
  • C# LiNQ 查询 join连接
    C# LiNQ 查询 join连接 ... [详细]
  • 不确定性|放入_华为机试题 HJ9提取不重复的整数
    不确定性|放入_华为机试题 HJ9提取不重复的整数 ... [详细]
  • 分享一个简化版的Silverlight链接图项目:Link Map Simplified
    本文介绍了一个使用Silverlight开发的可视化工具,主要用于展示和操作复杂的实体关系图(Graph)。该工具在犯罪调查系统中得到了广泛应用,帮助用户直观地获取和理解相关信息。 ... [详细]
  • 京东云图片上传注册指南
    本文详细介绍了如何在京东云平台完成账号注册并实现图片上传功能,涵盖从注册到配置的完整流程。 ... [详细]
  • 在网页设计中,如何将文本或图片进行水平和垂直居中是常见的需求。本文将详细介绍使用CSS和JavaScript(包括jQuery)实现DIV元素居中的多种方法,并提供实用的代码示例。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 如何在Excel中批量生成条形码
    本文将详细介绍如何利用Excel快速批量生成条形码,适用于需要为大量产品编码创建条形码的企业和用户。我们将逐步讲解从准备数据到最终生成条形码的完整过程,并提供实用的操作技巧。 ... [详细]
  • 解决U盘安装系统后无法重启的问题
    本文详细探讨了运维新手常遇到的U盘安装系统后无法正常重启的问题,提供了从问题分析到具体解决方案的完整步骤。通过理解Boot Loader的工作原理和正确配置启动项,帮助用户顺利解决问题。 ... [详细]
  • 使用 GitHub、JSDelivr、PicGo 和 Typora 构建高效的图床解决方案
    本文详细介绍了如何利用 GitHub 仓库、JSDelivr CDN、PicGo 图床工具和 Typora 编辑器,搭建一个高效且免费的图床系统。通过此方案,用户可以轻松管理和上传图片,并在 Markdown 文档中快速插入高质量的图片链接。 ... [详细]
  • 命名实体识别中的常见问题及解决方案
    本文探讨了在使用LTP进行命名实体识别时遇到的两个主要问题:句号未被正确标记为O,以及每段文字开始前总是出现O标签。文章通过具体示例和专业分析,提供了详细的解释和解决方案。 ... [详细]
author-avatar
cheer57_275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有