3583解罗隐实验一.docx
- 文档编号:17526124
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:18
- 大小:556.63KB
3583解罗隐实验一.docx
《3583解罗隐实验一.docx》由会员分享,可在线阅读,更多相关《3583解罗隐实验一.docx(18页珍藏版)》请在冰点文库上搜索。
3583解罗隐实验一
西南科技大学计算机学院
实验报告
实验名称五子棋黑盒测试
实验地点东六E507
实验日期2016/4/12
指导教师兰景英
学生班级软件1301
学生姓名解罗隐
学生学号20133583
提交日期2016/4/29
1.题目1
(1)题目内容描述
针对黑色测试编写了C++五子棋游戏代码,本项目主要有棋局绘制,棋局功能和机器AI三个类,主要源码文件如下图:
运行效果:
此界面为中级AI,白色为机器方
(2)测试用例的编写
①界面测试:
测试界面效果是否有误以及界面功能是否可操作:
1)开始游戏
测试用例名称:
游戏操作
测试用例编号:
界面测试001
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
001
错误等级:
测试条件:
开始游戏
测试输入:
点击开始游戏按钮
预期输出:
开始游戏
实际输出:
正常开始游戏
测试结果:
开始游戏按钮功能正常
2)悔棋
测试用例名称:
游戏操作
测试用例编号:
界面测试002
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
002
错误等级:
测试条件:
悔棋
测试输入:
点起悔棋按钮
预期输出:
游戏开始时悔棋
游戏过程中悔棋
游戏结束后悔棋
提示操作有误
悔棋成功
提示操作有误
实际输出:
图1
图2
图三
测试结果:
悔棋功能正常
悔棋功能正常
悔棋功能正常
图一:
(由于没有落子不能进行悔棋,所以提示无法悔棋)
图二:
(游戏过程中可以进行悔棋,点击悔棋撤销上一步的落子)
注:
我方为黑色旗子,悔棋之前的落子为图中被红色圈起来的黑色旗子
悔棋之后的结果:
图三:
游戏结束后悔棋
由于游戏结束不能进行悔棋
3)更多选项
测试用例名称:
游戏操作
测试用例编号:
界面测试003
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
003
错误等级:
测试条件:
开始游戏
测试输入:
点击开始更多选项
预期输出:
更多选项框对话框弹出
实际输出:
更多选项框对话框弹出
测试结果:
更多选项按钮功能正常
4)更多选项的字功能测试:
1、机器智力
测试用例名称:
游戏操作
测试用例编号:
界面测试00301
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
00301
错误等级:
测试条件:
开始游戏
测试输入:
选择机器智力等级
预期输出:
随着机器智力等级的增加,人越来越不容易赢,机器落子速度越来越快
实际输出:
随着机器智力等级的增加,人越来越不容易赢,机器落子速度越来越快
测试结果:
等级设置存在一定不合理,除了弱级和高级之间差距很明显可以感受出来之外,相邻的等级之间修改等级之后差距不太容易感受
2、对战模式
人机对战是人(黑子)落子后,机器(白子)自动落子
人人对战:
名称
人人对战
功能描述
人与人对弈过程
优先级
必须完成
输入
游戏一方掷棋子
工作流程
当游戏一方掷棋子后,改变棋子颜色,另外一方选择位置进行落子
输出
双方均落子
人机对战
名称
人机对战
功能描述
人与电脑对弈过程
优先级
必须完成
输入
游戏一方掷棋子
工作流程
当游戏一方掷棋子后,系统根据游戏规则选择位置进行落子
输出
根据游戏规则对对方落子做出反应
对战模式测试:
测试用例名称:
游戏操作
测试用例编号:
界面测试00302
测试时间:
2016/4/12
测试人:
杨巧
操作序号:
00302
错误等级:
测试条件:
开始游戏
测试输入:
选择对战模式
预期输出:
对战模式可以进行修改
实际输出:
对战模式可以进行修改
测试结果:
对战模式功能正常可以进行修改
②性能测试
1)落子
①棋盘有效区域且无子处落子
测试用例名称:
游戏操作
测试用例编号:
性能测试10101
测试时间:
201/4/162
测试人:
解罗隐
操作序号:
10101
错误等级:
测试条件:
落子
测试输入:
鼠标点击棋盘,落子
预期输出:
棋盘有效区域且无子
实际输出:
落子成功
测试结果:
落子功能正常
②棋盘有效区域但有子处落子
测试用例名称:
游戏操作
测试用例编号:
性能测试10102
测试时间:
201/4/162
测试人:
解罗隐
操作序号:
10102
错误等级:
测试条件:
落子
测试输入:
鼠标点击棋盘,落子
预期输出:
棋盘有效区域但有子
实际输出:
落子失败
测试结果:
落子功能正常
③棋盘无效区域点击落子
测试用例名称:
游戏操作
测试用例编号:
性能测试10103
测试时间:
201/4/162
测试人:
解罗隐
操作序号:
10103
错误等级:
测试条件:
落子
测试输入:
鼠标点击棋盘,落子
预期输出:
棋盘无效区域
实际输出:
落子失败
测试结果:
落子功能正常
④同人连续落子
测试用例名称:
游戏操作
测试用例编号:
性能测试10104
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
10104
错误等级:
测试条件:
同人连续落子
测试输入:
同一人落子后,在对方未落子前,继续点击棋盘落子
预期输出:
对于后一落子,系统不予回应
实际输出:
对于后一落子,系统不予回应
测试结果:
落子功能正常
⑤判定胜负后落子
测试用例名称:
游戏操作
测试用例编号:
性能测试10105
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
10105
错误等级:
测试条件:
系统已经判定胜负,继续落子
测试输入:
在胜负已经判定后,任一方继续落子
预期输出:
系统不予回应
实际输出:
系统不予回应
测试结果:
落子功能正常
2)胜负评判
测试用例名称:
游戏操作
测试用例编号:
性能测试102
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
102
错误等级:
测试条件:
棋局胜负评估
测试输入:
自动评判
预期输出:
判断棋局当前状态下胜负
实际输出:
判断棋局当前状态下胜负
测试结果:
评判功能正常
3)电脑AI
测试用例名称:
游戏操作
测试用例编号:
性能测试103
测试时间:
2016/4/12
测试人:
解罗隐
操作序号:
102
错误等级:
测试条件:
电脑AI
测试输入:
人机对战时,玩家落子后,电脑自动对应落子
预期输出:
电脑自动对应落子
实际输出:
电脑自动对应落子
测试结果:
电脑AI功能正常
③算法测试
本次项目主要使用的是Alpha-Beta剪枝算法
AlphaBeta算法是根据Minimax算法得来的,首先我们必须明白MiniMax算法的思想。
Minimax算法常用于棋类等由两方较量的游戏和程序。
该算法是一个零总和算法,即一方要在可选的选项中选择将其优势最大化的选择,另一方则选择令对手优势最小化的方法。
而开始的时候总和为0。
但是如果实际中使用Minimax算法,由于搜索深度和可能的情况很多,算法的效率很不理想,其实并没有必要每个节点都必须搜索完毕,有些事没有必要的。
AlphaBeta算法正是为了解决这个问题。
1.对于一个MIN节点,若能估计出其倒推值的上确界Beta,并且这个Beta值不大于MIN的父节点(MAX节点)的估计倒推值的下确界Alpha,即Alpha≥Beta,则就不必再扩展该MIN节点的其余子节点了,因为这些节点的估值对MIN父节点的倒推值已无任何影响了,这一过程称为Alpha剪枝。
2.对于一个MAX节点,若能估计出其倒推值的下确界Alpha,并且这个Alpha值不小于MAX的父节点(MIN节点)的估计倒推值的上确界Beta,即Alpha≥Beta,则就不必再扩展该MAX节点的其余子节点了,因为这些节点的估值对MAX父节点的倒推值已无任何影响了。
这一过程称为Beta剪枝。
3.一个MAX节点的Alpha值等于其后继节点当前最大的最终倒推值,一个MIN节点的Beta值等于其后继节点当前最小的最终倒推值
所以Alpha-Beta剪枝算法的测试主要用于机器智力等级的设置上面
对于机器智力需要大量的测试
弱级:
阻碍法AI:
尽力阻碍对手成5连智力较低
大量测试表明初级时,机器主要采用围堵法,比较容易取胜
初级:
不预测对棋局进行评分,找到分值最大的位置
中级:
预测一步对棋局进行评分,找到分值最大的位置
高级:
预测2步棋型
取胜不容易
(3)测试结果分析
体架构方面都没有大问题,而在加入人机对战、机器对战及悔棋功能时,一些细微问题需要好好研究,存在一定的不完善。
AI等智力问题也要适中。
太弱智了玩得没激情,太聪明了玩得没信心。
经过测试,发现再高级的AI也有输的时候,测试的博弈树的深度为2,再深反应会很慢,也就是说能预测两步的AI也会输。
刚开始找到博弈树算法时,以为不管深度为多少都很聪明,后来发现只要找到窍门,那么深度为2的也很容易被打败。
而深度为3的反应需要10秒,后面的深度呈指数型增长,不符合实际需求。
游戏经过多次测试,反应良好。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3583 解罗隐 实验