首页 > 其他分享 >【第四章】测试理论与方法 - 黑盒测试

【第四章】测试理论与方法 - 黑盒测试

时间:2024-08-05 11:27:00浏览次数:10  
标签:黑盒 边界值 等价 测试用例 测试 软件 第四章

     大家好,我是一名全栈测试开发工程师,除了工作和家庭,平时还喜欢参与开源项目搞点博客软文,目前已经开源一套【自动化测试框架】和【测试管理平台】。欢迎大家关注我,和我一起【分享测试知识,交流测试技术,趣闻行业热点】。

        在软件测试的领域中,黑盒测试是一种重要且常用的测试方法。它能够帮助我们有效地发现软件中的缺陷,确保软件的功能符合预期。

一、黑盒测试的定义与概念


        黑盒测试,顾名思义,是将被测试的软件看作一个“黑盒子”,测试人员不需要了解软件内部的代码结构和逻辑,而是从软件的外部,根据软件的规格说明书和用户需求,来设计测试用例,检查软件的功能是否正确实现。所以,又被称为功能测试或数据驱动测试,是一种重要的软件测试方法,它专注于测试软件的功能需求,而非其内部结构和实现细节。今天,我们将进一步深入黑盒测试的理论与方法,并通过具体的案例来展示其应用。

二、黑盒测试的主要特点


  • 不关注内部实现:测试人员无需了解软件的内部代码和结构,只关心输入和输出的关系。

  • 基于需求:完全依据软件的需求规格说明书来设计测试用例。

  • 发现功能缺陷:主要用于发现软件在功能方面的错误和缺陷。

三、黑盒测试的方法


1、等价类划分法

        等价类划分是黑盒测试中最为常用和有效的方法之一。其核心思想是将所有可能的输入数据划分为若干个子集(等价类),然后从每个等价类中选取具有代表性的数据进行测试。这种方法可以有效减少测试用例的数量,同时提高测试的覆盖率和效率。

深入论述

        等价类划分不仅关注有效输入,还涵盖无效输入。以银行转账系统为例,除了正常的转账金额(如100元至100万元之间),还需考虑零金额、负金额、超出系统限制的金额等无效等价类。这种划分不仅有助于发现常规错误,还能揭示潜在的边界问题和异常情况。

补充案例

        对于一个要求输入年龄在 18 到 60 岁之间的软件,可划分为有效等价类(18 - 60 岁)和无效等价类(小于 18 岁、大于 60 岁)。

2、 边界值分析法

        边界值分析是等价类划分的补充,它专注于测试输入数据的边界值。经验表明,很多程序错误都发生在边界值附近。因此,在设计测试用例时,必须包含边界值测试。

深入论述:

        以年龄输入为例,除了测试典型的中间值(如30岁),还应特别关注边界值(如18岁、60岁)以及紧邻边界的值(如17岁、61岁)。这些值能够触发不同的处理逻辑,从而暴露潜在的错误。

补充案例:

        假设一个输入框要求输入数字在 1 到 100 之间,那么边界值为 1、0、100、101。

3、 错误推测法

        错误推测法依赖于测试工程师的经验和直觉。他们根据对程序的理解和对常见错误类型的了解,来预测可能的错误点,并设计相应的测试用例。这种方法虽然主观性较强,但在实际应用中往往能够发现一些难以预料的错误。

深入论述:

        在登录功能测试中,除了考虑常见的密码错误、用户名不存在等情况外,还可以推测并测试如密码过期、账户被锁定等边缘情况。这些测试用例的设计基于对程序行为的深入理解和对用户习惯的把握。

案例补充:

        在测试一家电商企业的登录功能时,可以推测可能会出现“验证码失效时间计算错误”,设计相应测试用例。可以避免大量用户因验证码问题而无法登录的潜在风险。

4、场景分析法

        场景分析法专门针对软件业务流程进行测试的方法。‌通过分析业务流程,‌找出所有可能的路径,‌并为每条路径编写测试用例。‌这种方法适用于需要全面测试业务流程的情况。

深入论述:

        在购物系统测试中,场景分析法要求测试工程师分析各种条件组合(如购买金额、会员身份等)对优惠政策的影响。通过设计涵盖所有可能场景的测试用例,可以确保软件在各种情况下都能正确运行。

5、判定表法

        判定表法是一种通过构建判定表来分析和设计测试用例的方法。它适用于那些具有多个输入条件和多个输出结果的复杂逻辑场景。

深入论述:

        判定表法首先列出所有可能的输入条件和输出结果组合,然后分析这些组合之间的逻辑关系以构建判定表。通过遍历判定表中的每一项来设计测试用例可以确保测试的全面性和准确性。

案例补充:

        在税务系统中使用判定表法测试税收政策的应用情况时,测试工程师可以列出各种税收条件(如收入、家庭状况等)和对应的税收政策(如税率、免税额等)构建判定表。然后依据判定表设计测试用例以验证税收政策的正确性。

6、正交法

        正交法是一种基于正交实验设计的测试方法它通过正交表来安排多因素、多水平的实验设计以确保测试的全面性和高效性。

深入论述:

        在软件测试中应用正交法可以大大减少测试用例的数量同时保持较高的测试覆盖率。例如在一个涉及多个配置项的软件中可以使用正交法来挑选出具有代表性的配置项组合进行测试以发现潜在的配置错误或交互问题。

案例补充:

        一家软件公司在测试其图形界面库时采用了正交法。他们首先列出了所有可能的界面元素(如按钮、文本框等)和属性(如颜色、大小等)然后使用正交表挑选出具有代表性的组合进行测试。这种方法不仅大大降低了测试成本还提高了软件界面的稳定性和兼容性。

四、黑盒测试的优点


  • 对测试人员的技术要求相对较低,易于上手。

  • 能够从用户的角度出发,发现软件在功能和界面方面的问题。

  • 有助于发现软件与需求不一致的地方。

五、黑盒测试的局限性


  • 不能发现软件内部的代码错误和逻辑错误。

  • 对于某些复杂的功能,可能需要大量的测试用例来覆盖。

六、综合案例:购物车测试


        为了更全面地展示黑盒测试的应用,我们将以购物车测试为例,综合运用上述测试策略。

需求描述:

    ​用户可以在购物车中添加、删除商品,修改商品数量,并查看购物车中的商品总价。

测试用例设计:

  1. 等价类划分:

        - 有效等价类:商品ID、数量均为正整数;商品单价为合理范围内的数值。

        - 无效等价类:商品ID为空或负值;数量为0或负值;商品单价为0或负值。

2. 边界值分析:

        - 测试商品数量为1和最大允许数量的边界值。

        - 测试商品单价为最小允许值和最大允许值的边界值。

3. 错误推测:

        - 尝试添加超出库存数量的商品。

        - 尝试修改商品数量为负值并检查程序的处理方式。

执行测试:

        按照上述测试用例执行测试,并记录测试结果。对于每个测试用例,都应包括测试环境、测试步骤、测试数据和预期结果等要素。

分析结果:

        根据测试结果分析程序的功能是否符合需求规格说明书的要求。对于发现的错误或缺陷,应及时记录并提交给开发团队进行修复。

七、结语


        黑盒测试在软件测试中具有不可替代的地位,它能够快速有效地发现软件在功能方面的问题,为软件质量提供重要保障。但在实际测试中,往往需要结合其他测试方法,如白盒测试,来达到更全面、更深入的测试效果。

        希望通过这篇博客,能让您对黑盒测试有更清晰、更深入的理解!如果您有关于黑盒测试的更多想法或经验,欢迎在评论区交流分享。

标签:黑盒,边界值,等价,测试用例,测试,软件,第四章
From: https://blog.csdn.net/qq_39465480/article/details/140922293

相关文章

  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-63 - Canvas和SVG元素定位
    1.简介今天宏哥分享的在实际测试工作中很少遇到,比较生僻,如果突然遇到我们可能会脑大、懵逼,一时之间不知道怎么办?所以宏哥这里提供一种思路供大家学习和参考。2.SVG简介svg也是html5新增的一个标签,它跟canvas很相似。都可以实现绘图、动画。但是svg绘制出来的都是矢量图,不像canv......
  • 爬1688商品---(测试版)
    半成品.fromDrissionPageimportChromiumPageimporttimefromseleniumimportwebdriverurl='https://p4psearch.1688.com/hamlet.html?scene=6&cosite=baidujj_pz&location=re&trackid=885662561117990122602'page=ChromiumPage()page.get(ur......
  • 【自动化测试必学语言】python:面向对象
    目录面向对象基本介绍类和对象类的组成类的抽象(类的设计)面向代码的步骤面向对象基本代码的书写self的说明对象的属性操作添加属性获取属性魔法方法__init__方法**__str__方法*__del__方法 【了解】案例封装案例案例二私有和公有案例继承语法案例......
  • Selenium + Python 自动化测试03(元素定位)
        上一篇我们讲述了第一个测试用例脚本的编写。我们对web自动化测试有了一个初步的认识。接着我们详细讲述元素定位方法。        Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控......
  • 配置 Pytest 以跨多个项目目录查找测试
    我希望使用pytest对项目中的所有AWSLambda代码进行单元测试。由于我必须配置目录结构才能与基础设施即代码工具一起使用,每个Lambda都位于它自己的CloudFormation堆栈中,因此我有一个相当非标准的目录结构。我无法让pytest在我的所有Lambda函数中运行所有测试-理想......
  • 自动化测试平台设计与实现(一)
    主要想通过实现一个简约但功能详细,能有效提升“自动化”这个关键能力的项目,来巩固自己的测试理论。以下分为几块内容去解决。其次,一个平台,要考虑可扩展性,当前只能用来测试自动化、后面是否可以满足mock服务的管理与部署,满足可靠性测试的自动化实现等。一、项目简介:后端基于pytho......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-5-创建首个自动化脚本(详细教程)
     软件测试微信群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介前面几篇宏哥介绍了两种(java和maven)环境搭建和浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本。前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容,首先宏......
  • 【第一章】软件测试人员的成长技能树:打造全方位的技能体系
        大家好,我是一名全栈测试开发工程师,除了工作和家庭,平时还喜欢参与开源项目、搞点博客软文,目前已经开源一套【自动化测试框架】和【测试管理平台】。欢迎大家关注我,和我一起【分享测试知识,交流测试技术,趣闻行业热点】。        在当今数字化的时代,软件测试已......
  • 成绩系统测试
    #include<stdio.h>#include<stdlib.h>#include<string.h>structstudent{charid[15];charname[20];intenglish;intmath;intc;inttotal;floataverage;intrank;structstudent*next;};type......
  • 流量回放技术测试领域应用及GoReplay demo实践总结
    目录前言基本概念流量回放的优势1.高度模拟真实环境:2.提高测试覆盖率:3.快速定位和复现问题:4.减少测试时间和成本:5.支持持续集成和持续部署(CI/CD):6.增强安全性测试:7.支持多场景测试:8.数据驱动的测试:9.提高团队协作效率:10.易于集成和扩展:方案比较1.Nginx层流量......