灰太狼与红太狼抓羊 - 记一次应用云测试经历

2023-10-12 22:18

本文主要是介绍灰太狼与红太狼抓羊 - 记一次应用云测试经历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     灰太狼和红太狼(它们是用户)从羊羊村抓了6只羊放在羊圈(云)中,并且羊圈总共有5扇门。现在它们想吃羊,但是有一定的条件:

l   吃羊必须经过两个步骤:

u  将羊经过5扇门中任何其中一扇从羊圈中牵出

u  将羊吃掉

l   从同一扇门中可以分批次牵出15只羊不等。

l   总共能从羊圈中牵出5只羊。

l   抓出来的羊归属一旦确定,不能相互交换,即灰太狼的羊不能给红太狼吃,反之亦然。

l   从羊圈中抓羊的事情只有灰太狼能完成,如果红太狼想吃羊,必须要灰太狼去抓,并且灰太狼每经过一扇门,就要将抓来的羊中分一只给灰太狼,作为酬劳。

l   在羊从羊圈中牵出后,如果狼突然不想吃羊了,可以将羊放回羊圈中。

l   从同一扇门中牵出的,当前还没有吃掉的羊,如果想放回羊圈中,必须同时放回,不可以单独放回。

l   上述同一扇门中放回的羊,如果突然之间又想吃了,可以选择一次性将这些羊从羊圈中牵出。

l   在开始抓羊前,灰太狼和红太狼知道羊圈中总共有6只羊,但是在抓羊的过程中灰太狼和红太狼不知道羊圈中还剩余多少只羊。

 

我们要验证的是:

l  在满足上述条件的前提下,灰太狼和红太郎抓羊,吃羊都能正常进行。

l  当灰太狼和红太狼从羊圈中不管以哪种方式牵出了5只羊后,如果它们想牵出第6只羊,系统将给出警告:“牵羊失败,请从羊羊村再5只羊放在羊圈中!”

 

     现在我们来分析探索一下上述灰太狼与红太狼抓羊与吃羊模型该怎么测试,情况很复杂,原因主要分为以下几点:

l   灰太狼抓羊经过的门可以有5种选择。

l   5扇门(测试设备)在真实的测试环境中由于资源受限,无法达到这个要求。

l   红太狼要吃羊要靠灰太狼去抓,且要分给灰太狼一只,且没有一一配对原则存在。

l   羊不吃的情况还可以将羊放回羊圈,而且还有限制条件。

l   在抓羊未到6只得前提下,系统不能给出任何提示,灰太狼和红太狼也不能清点羊圈中羊的数量。

 

         情况复杂到我连完整的数据流程图都画不出来,所以如果按照场景测试方法,根本无法下手,即使能写出一些,也不可能做到高覆盖率或全覆盖率。还有其他办法吗,或许想到了组合测试,但仔细想想,组合测试也不适合,因为组合测试的对上述原因中的第二和第三点无能无力。杯具啊!看来只能妥协了,既然做不到全覆盖路径,看来只能测试基本路径了:

l   灰太狼能抓羊,吃羊。

l   红太狼能靠灰太狼抓羊,且自己能吃羊。

l   能将没吃的,且从同一扇门中牵出的羊送回羊圈。(这个需要通过后续其它门中牵出羊的数量来加以验证)

 

         为了保证云应用提供商的利益(不能牵出第6只羊),我们还必须对资源耗尽后(已经牵出了5只羊)的各种情况加以覆盖:

l   灰太狼再从羊圈中抓羊会失败。

l   红太狼委托灰太狼抓羊会失败。

l   从任何一扇门尝试抓羊都会失败。

 

         至此,测试能做的似乎也只能这样了,总觉得有些许遗憾,因为对于场景的覆盖还没有找到很好的办法加以全列举或组合列举,希望通过苦练用例设计的内功能在将来的某一天找到合适的方法来重新审视这个案例!

 

这篇关于灰太狼与红太狼抓羊 - 记一次应用云测试经历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198808

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、