[游戏测试]基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。

news2025/2/22 17:51:54

  ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪 (*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜

✏️write in front✏️
📝个人主页:陈丹宇jmu
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
🙉联系作者🙈by QQ:813942269🐧
🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意🏳️‍🌈
✉️少年不惧岁月长,彼方尚有荣光在 🏆

[专栏链接] 人工智能项目实战-【AI智能五子棋项目的开发】https://blog.csdn.net/weixin_51989356/category_12160426.html?spm=1001.2014.3001.5482icon-default.png?t=MBR7https://blog.csdn.net/weixin_51989356/category_12160426.html?spm=1001.2014.3001.5482


⬜⬜⬜ ---🟧🟨🟩🟦🟪前言🟧🟨🟩🟦🟪---⬜⬜⬜ 


本次的内容是对于先前设计的AI智能五子棋游戏的程序软件测试说明,也是我第一次尝试对软件测试写的一次测试报告,万事开头难,我把我进行软件测试的过程发布在本节内容,大家一起学起来啦,恳请路过的大佬可以在评论中不吝赐教,谢谢啦。

🚩本篇主要内容


游戏软件测试情况

  1. 测试数据说明
  2. 白盒测试学习
  3. 黑盒测试学习
  4. 测试用例Debug分析
  5. 测试结果总结

📋笔记目录 

🚩本篇主要内容

📒一. 游戏软件测试情况

⏳1.1. 测试数据说明

⏳1.2.白盒测试 

⏳1.3.黑盒测试

⏳1.4.测试用例Debug分析

⏳1.5.测试结果分析 

📒一. 游戏软件测试情况


⏳1.1. 测试数据说明

实验环境说明:

    硬件配置:CPU 2.70GHz , 内存 16GB

    操作系统:Windows 11 64位操作系统

    Python版本:Python 3.6.8

常见的软件测试阶段的工作主要分为单元测试、集成测试、确认测试和系统测试四个步骤。测试方法有黑盒测试和白盒测试两种方法:黑盒测试(已经知道产品应该具有的功能,可以通过测试来检验是否每个功能都正常);白盒测试(如果知道产品内部工作过程,可以通过测试来检验内部动作是否按照说明书的规定正常进行)。

本游戏测试的主要方法包括黑盒测试和白盒测试,通过个人游玩,观察游戏在运行过程中,所需要实现的功能有没有实现,以及在测试过程中有没有发现新的问题记录在案。然后根据测试后所产生的一系列的问题,对游戏的组织进行改进,然后再进行测试,就这样重复的进行这样的工作,直到游戏的运行与预想时的状况基本一致时,才算通过测试。

游戏完整功能的测试

⏳1.2.白盒测试 

白盒测试通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正,这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

用软件白盒测试产生的测试用例能够: 

1)   保证一个模块中的所有独立路径至少被使用一次;

2)   对所有逻辑值均需测试true和false;

3)   在上下边界及可操作范围内运行所有循环;

4)   检查内部数据结构以确保其有效性。

⏳1.3.黑盒测试

软件黑盒测试也是软件测试的主要方法之一,也可以称为功能测试、数据驱动测试或基于规格说明的测试。测试者不了解程序的内部情况,只知道程序的输入、输出和系统的功能,这是从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。

软件黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误:

1)   功能不正确或遗漏;

2)   界面错误;

3)   数据库访问错误;

4)   性能错误;

5)   初始化和终止错误等。

测试方法可以分为以下几种:等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。从理论上讲,软件黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。软件黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将 测试行为具体量化的方法之一。

⏳1.4.测试用例Debug分析

下面列出13个测试用例结果达到了预想的目标。

表1.4 测试用例

用例

       操作

     预期结果

    实际结果

      用例1

是否能在不同版本的Python中运行

游戏能够在设计该游戏版本及以上运行

成功

      用例2

运行时能否正常显示主界面

运行时能正常显示主界面

成功

      用例3

鼠标单击棋盘,是否会有棋子落于该位置

棋子落于鼠标点击位置

成功

      用例4

用户落子之后电脑在棋盘不满的情况下可以落子

电脑可以正常落子

成功

      用例5

当人下子出现“活三”、“冲四”,电脑是否会下子堵截

电脑会下子堵截

成功

      用例6

多次游戏测试:在人(黑棋)没有出现“活三”、“冲四”的情况下,电脑(白棋)落子是否存在规律

黑棋没有出现“活三”、 “冲四”的情况下,电脑 (白棋)随机落子,不存 在规律

成功

      用例7

进行对战时,按照规则下棋能否正常输赢

可以正常输赢

成功

用例8

判断在横线上5子能否获得胜利

可以

成功

用例9

判断在竖线上5子能否获得成功

可以

成功

用例10

判断在斜线上5子能否获得成功

可以

成功

用例11

棋盘满时能否成功出现平局字样

可以

成功

用例12

落过棋子的地方是否可以重复落子

不可以

成功

用例13

一方获胜时,能否出现用户获胜或者电脑获胜

正常显示

成功

⏳1.5.测试结果分析 

代码的game部分实现了主要算法,通过记录所有相同颜色棋子的位置来判断是否赢了。每次用户落子后ai都会判断用户落子位置,然后进行落子,如果出现“活三”“冲四”,就会落子进行阻挡。虽然可以正常进行用户与人机下棋,但在时间运行上开销较大,判断的过程会有多次if条件判断,时间复杂度较高,导致多轮落子后,ai判断落子位置时间增加以及判断输赢时间增加。

测试运行质量分析

 

 🟨🟩🟦我是陈丹宇jum,我也在一直努力提升自己,欢迎大家给我留言,批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于idea中查看源码时的注释以及.class与.java文件的问题

文章目录问题描述解决方法问题描述 在使用idea编辑器学习java的时候发现有的人的idea将鼠标方法java自带的类方法上会出现解释注释,但是我的idea不可以,经过查询发现是idea中jdk选择的问题。 下图为能查看注释时的截图 按住ctrl点击方法名进入&#x…

分治和递归

目录 分治的概念: 递归的概念: 分治策略的特征: 分治法步骤: 例:阶乘! 迭代 递归 关于递归使用栈 斐波拉切数列 迭代 递归 分治的概念: 将一个难以直接解决的大问题(规模大…

【年终总结】我的前端之行,回顾2022,展望2023

🐱个人主页:不叫猫先生 🙋‍♂️作者简介:前端领域新星创作者、华为云享专家、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏&#xff…

Vivado综合属性之MAX_FANOUT

本文介绍了综合属性MAX_FANOUT对Schematic的影响,通过本文可以理解通过寄存器复制的方式可以降低扇出。 高扇出信号可能会因为布线拥塞而出现时序问题。常用的规避方法是通过寄存器复制的方式降低扇出,可通过MAX_FANOUT实现寄存器复制。 MAX_FANOUT既可…

为金融业保驾护航,浪潮存储容灾方案获得权威媒体认可

近日,在2022中国金融科技年会上,经权威IT专家多项严格评审,浪潮金融行业数据存储与容灾解决方案,凭借安全、可靠、经济、高效四大优势,能够满足金融业务服务永远在线、数据永不丢失、性能永远满足、容量永远充足的核心…

【Linux】Linux编译器 gcc 的使用 | 动静态库的初步认识

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:Linux 文章目录一、前言二、gcc 演示翻译环境1、预处理2、编译3、汇编4、链接5、总结三、动静态链接库1、库…

代码随想录算法训练营第6天 1.两数之和、242. 有效的字母异位词、349.两个数组的交集

代码随想录算法训练营第6天 1.两数之和、242. 有效的字母异位词、349.两个数组的交集 两数之和 力扣题目链接(opens new window) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 首…

JS数字日期转中文日期(封装函数,dayjs转换时间格式)

JS数字日期转中文日期往期相关文章场景复现封装函数(数字日期转中文日期)实际应用往期相关文章 文章内容文章链接JS数组对象——根据日期进行排序,按照时间进行升序或降序排序https://blog.csdn.net/XSL_HR/article/details/128579840?spm1…

Markdown使用说明

Markdown使用说明欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注…

[网鼎杯 2020 朱雀组]phpweb

目录 信息收集 方法一:in_array()函数绕过 方法二:反序列化漏洞利用 信息收集 抓个包,发现POST传入以下内容 funcdate&pY-m-dh%3Ai%3Asa func和p的值分别为一个待执行的函数和函数的参数 构造payload 尝试funcphpinfo&p 回显 H…

【学习笔记之Linux】权限

权限概念 一件事是否允许被谁“做”,这就是权限。权限 用户 文件属性。   在Linux上,用户分为普通用户和root。root是超级管理员 ≈ 天王老子,只能够有一个。root的命令提示符是#;普通用户通过root创建,可以有多个…

【案例教程】地下水环评(一级)实践技术及Modflow地下水数值模拟

【前沿】地下水数值模拟技术应用与地下水环评报告编制方法实践线上直播课程,主要围绕的环评导则,结合不同行业类别,实例讲解地下水环境影响评价的原则、内容、工作程序、方法。包括数据处理分析、数值模型构建以及环评报告编写等。涉及地下水…

【自学C++】C++ int

C int C int教程 C 中的 int 用来表示一个 整数,也可以叫做整型,int 的取值范围是介于 short 和 long 之间的。 C int定义详解 语法 int varname value;参数 参数描述int定义 int 类型变量使用的类型。varname变量名。value可选,变量的…

Linux应用编程---9.消息队列

Linux应用编程—9.消息队列 ​ 消息队列用于进程之间的通讯,可以在如父子进程、兄弟进程这样的具有亲缘关系的进程之间传递数据,也可以用于具有非亲缘关系的进程之间通讯。消息队列可以传递结构体,所以可以发送任意数据类型。与消息队列有关…

数据结构(一)——链表

链表与邻接表 介绍 链表作为一种基础数据结构,具有几个特点: 优点:插入、删除非常快(需要知道需要插入和删除节点前一个位置)缺点:查询、访问(用索引)非常的慢 链表的创建方法一…

Selenium用法详解【cookies操作】【JAVA爬虫】

简介本文主要讲解java代码利用Selenium控制浏览器获取网站的cookies,对网站cookies的相关操作教程。cookies操作cookies 是识别用户登录与否的关键,爬虫中常常使用 selenium jsoup 实现 cookie持久化,即先用 selenium 模拟登陆获取 cookie ,…

你可能从未想过的:人工智能未来50年的安全领域问题

前言 随着人工智能技术的普及和发展,很多人工智能出现的故障和问题也会愈发明显。本文简单讲述了未来50年人工智能发展过程中可能会出现的景象和问题。 一、人工智能独立 尽管很可能第一批人工智能是由人类发明制作的,但随着大量基础设施的完善&#x…

javaweb-会话技术CookieSession

文章目录会话技术Cookie&Session1,会话跟踪技术的概述2,Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3,Session3.1 Session的基本使用3.2 Session的原理分析3.3 Sess…

4.8、网际控制报文协议 ICMP

为了更有效地转发 IP 数据报和提高交付成功的机会 在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)。 主机或路由器使用 ICMP 来发送 差错报告报文\color{red}差错报告报文差错报告报文和询问报文\color{red}询问报文询问报文。 ICMP报文被封装在IP…

基于采样的规划算法之动态窗口法(DWA)

动态规划将一个多步决策问题拆分成若干子问题,并且保证子问题的最优解能推出完整问题的最优解。所以,动态规划可以得到采样空间下的最优路径解。本章介绍的动态窗口法(Dynamic Window Approach, DWA)与动态规划类似,也是将从起点到终点的多步决策问题拆分成一系列子问题—…