-

DOTA2黑盒测试 软件测试论文
2023年5月2日发(作者:华为微信主题)

软件测试论文

DOTA2—黑盒测试

摘要:

Dota(Defence of the Ancients,远古的守护) 是指基于魔兽争霸3:冰封王座

(暴雪娱乐公司出品别名:War3)的多人对战自定义地图,可支持4-12个人同时连线游戏。Dota

以对立的两个小队展开对战,通常是5v5(也存在6V6,游戏目的是守护自己的远古遗迹(天辉

方的生命之树、夜魇方的冰封王座)同时摧毁对方的远古遗迹。DotA是目前唯一被暴雪官方认

可的魔兽争霸RPGDOTA2是由DotA之父Icefrog主创打造的正统续作,其完整继承了原作

DotA超过一百位的英雄。DOTA2的玩法和DotA完全相同,通过顶级的系统、美术和功能,呈

现出了超越经典且原味十足的体验感觉。在这些传承中还有着些许多改进,DOTA2中优化了在

WAR3平台上的延迟,界面也相对WAR3进行了美化,拥有了WAR3平台上不曾有的断线重连机制,

DOTA2在各大评测平台和大部分玩家中都评价很高,但还是存在着很多微小的瑕疵与不平衡。

关键词:DOTA2DOTA、黑盒测试、魔兽争霸3:冰封王座、WAR3

1 / 23

引言

DotA繁体版最先始于6.41时代,由Dotacn的六翼风铃最先制作,基本上以简体版为

蓝本,对个别名词稍做修正(如地精修补匠的激光改为镭射),但是大部分同简体版相同,

仅为字体转换,六翼风铃版本一直发布至6.51,由于他本人上学的缘故,停止了新版本的

更新。之后,在6.53时代,Icefrog组建了专门的各种语言翻译小组,繁体的由台湾玩家

Sprite93担任组长,但由于各种缘故,拖了很久,仍没有一个雏形翻译出来,6.54之后,

港澳台玩家主要玩zxcv9992翻译的繁体版Dota,他的版本是以六翼风铃为蓝本,语言上基

本上未做更改。后来6.60Icefrog重新组建了繁体互通汉化小组,Aegis独立担任组长

至今。20091225日,DOTA6.65作为圣诞大礼登录中国。

DOTA2是现有DOTA的新引擎版。已更新到6.83C,在之间每一个版本的更新中,或多

或少的存在了BUG的修复,在这些BUG修复的同时也产生了其他的BUG,在文章中会以图文

交互的形式用黑盒测试的方法展现出现今版本有哪些BUG或者易用性的改进。

2 / 23

1 黑盒测试介绍

1.1 作用

从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出

程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合

法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定

测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加

以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例

设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、

功能图法、场景法等。

1.2 作用

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

功能不正确或遗漏;

界面错误;

输入和输出错误;

数据库访问错误;

性能错误;

初始化和终止错误等。

1.3 流程

1.3.1 测试计划

首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制

订黑盒测试的最高标准,以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是

合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。

1.3.2 测试设计

将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当

的测试用例(测试用例选择的好坏将直接影响到测试结果的有效性)

1.3.3 测试开发

建立可重复使用的自动测试过程。

3 / 23

1.3.4测试执行

执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、

组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印

地进行测试。

1.3.5测试评估

结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行

综合评价。

2 测试概要

2.1 测试内容

登陆模块

等待界面模块

游戏内容模块

2.2 测试方式

主要采用黑盒测试中的场景测试

2.3 测试环境与配置

类别

操作系统 Windows 7 旗舰版 Service Pack 1Build 760164-bit

主板

显示器

处理器 InterRCoreTM i7-4700MQ***********四核

内存

硬盘 三星 ATASamsungSSD 840128GB

Terrans Force X811

1920*1080 Default Monitor

16GB

日立ATAHGST HTS721010A9(1000GB)

4 / 23

显卡

NVIDIA GeForce GTX780M

Flash版本 11.9.900.170IE11.9.900.170(非IE

网卡 IntelRWireless-N 2230Realtek PCIe GBE Family Controller

运行库:

DirectX End-User Runtimes (June 2010)

Microsoft .NET Framework 3.5 Service Pack 1

Microsoft .NET Framework 4 (Standalone Installer)

Microsoft .NET Framework 4 Client Profile (Standalone Installer)

Microsoft XNA Framework Redistributable 4.0

Microsoft Visual C++ 2005 SP1 Redistributable Package (x64)

Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)

Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)

Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)

Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)

Microsoft Core XML Services (MSXML) 6.0 Service Pack 1

NVIDIA PhysX 9.10.0513

OpenAL 2.0.7.0

Microsoft Games for Windows - LIVE 3.5

3 测试内容和执行情况

3.1 登录模块

采用场景测试

3.1.1确定基本流和备选流

基本流 打开Steam,输入账号密码,等待游戏更新,进入游戏

备选流1 账号不存在

备选流2 密码错误

备选流3 网络错误

5 / 23

备选流4 缺少基本运行库

备选流5 虚拟内存不足

3.1.2根据基本流和备选流确定场景

场景1进入游戏 基本流

场景2账号不存在 基本流 备选流1

场景3密码错误 基本流 备选流2

场景4网络错误 基本流 备选流3

场景5缺少基本运行库 基本流 备选流4

场景6虚拟内存不足 基本流 备选流5

3.1.3设计测试用例

测试用场景/账号 密码 运行库 内存 虚拟内存 网络 预期结果

ID

1 4517833****************** 16G

进入游戏 自动 成功进入游戏

60

2 Ad5x1a3Aaaaaaaa 16G

账号不存 自动 提示账号不存在

无法进入

3 4517833Aaaaaaaa 16G

密码错误 自动 提示密码错误

w$

60

4 4517833****************** 16G

网络错误 自动 提示网络错误

60

5 4517833****************** 16G

缺少基本 自动 提示缺少运行库

运行库 无法进入

6 4517833****************** 2G 1G

虚拟内存 进入到LOADING界面

不足 游戏崩溃

60

60

(真实密码不公开)

无法进入

无法进入

3.1.4测试结果

测试用场景/账号 密码 运行库 内存 虚拟内存 网络 结果

ID

6 / 23

1 4517833****************** 16G

进入游戏 自动 成功进入游戏

60

(真实密码不公开)

Aaaaaaaa 2 Ad5x1a316G

账号不存 自动 提示账号不存在或密码

错误

w$

无法进入

3 4517833Aaaaaaaa 16G

密码错误 自动 提示账号不存在或密码

60

错误

无法进入

4 4517833****************** 16G

网络错误 自动 提示无法连上

60

Steam网络

无法进入

5 4517833****************** 16G

缺少基本 自动 自动下载所需运行库

运行库 下载完成后

60

进入游戏

6 4517833****************** 2G 1G

虚拟内存 提示虚拟内存不足

不足 进入到LOADING界面

60

游戏崩溃

3.1.5插图

场景1

7 / 23

场景2

场景3

8 / 23

场景4

场景5

9 / 23

场景6:因直接程序崩溃所以截取不到图。

3.2等待界面模块

3.2.1 官方动态窗口

设计测试用例:

1)在等待界面断开网络链接;

预期结果:链接失效,无法加载其他。

2)使用鼠标滚轮向下滚动浏览;

预期结果:正常滚动。

3)单击其中任意链接;

预期结果:正常跳转。

4)单击其他栏目

预期结果:正常跳转。

手工运行测试结果:

1)测试结果:断开网络连接后窗口变黑,然后提示-105,与预期结果有差异

2)测试结果:在内容页无法向下滚动,将鼠标移至滚动条才能正常使用,与预期结果不符

3)测试结果:不是在窗口内跳转,而是新弹出浏览器窗口,与预期结果不符

4)测试结果:能正常跳转,与预期结果相符

3.2.2 商城页面

因为网络原因,无法加载商城

提示-105

3.2.3 进行游戏页面

设计测试用例:

1)切换寻找游戏方式,教学与私人游戏;

预期结果:正常切换。

2)断开网络链接,点击寻找匹配;

预期结果:点击无反应,并提示网络中断。

3)断开网络连接,勾选和电脑玩家进行单机游戏,点击开始游戏;

10 / 23

预期结果:点击无反应,并提示网络中断。

4)在一般配对中开始匹配,断开网络连接;

预期结果:无法加入游戏,但是系统判定已加入游戏。

5)切换到寻找教练,并且邀请好友成为教练;

预期结果:成功邀请,并且邀请被接受、拒绝或者无反应。

手工运行测试结果:

1)测试结果:与预期结果相符。

2)测试结果:除电脑配对新手训练以外的全部选项禁止切换,并且电脑配对里的寻找玩家作为

队友也无法勾选,提示重新连接至网络,与预期结果有差异

3)测试结果:电脑配对里的寻找玩家作为队友无法勾选,提示重新连接至网络,但是允许与电脑

作为队友开始游戏,与预期结果不符

4)测试结果:无法正常加入游戏,并且无法点击取消匹配,系统并没有判定加入了游戏,与预期

结果不符

5)测试结果:与预期结果相符。

3.2.4 好友聊天

DOTA2的好友系统直接采用的是STEAM平台的好友系统。

设计测试用例:

1)单击好友发送讯息;

预期结果:弹出对话框。

2)发送正常文字;

预期结果:能正常显示。

3)发送“/

预期结果:能正常显示。

4)发送以"-"开头的字符;

预期结果:能正常显示。

因怕扰人测试用例到此为止

手工运行测试结果:

1)测试结果:与预期结果相符。

2)测试结果:与预期结果相符。

3)测试结果:与预期结果相符。

11 / 23

4)测试结果:与预期结果相符。

3.2.5 插图

官方动态窗口:

商城页面:

12 / 23

进行游戏页面:

13 / 23

好友聊天:

14 / 23

3.3游戏内容模块

创建一场自定义游戏并开启test模式

test指令如下:

-lvlup 数字 (可以使用)

提升自己的英雄 X

-levelbots 数字 (可以使用)

提升所有的机器人 X

-gold 数字 (可以使用)

给你 X 的不稳定金钱

-item 物品名称 (可以使用)

给与玩家特定的物品,名称在下方有列表

-givebots 物品名称 (可以使用)

给予所有机器人一件物品

-refresh (可以使用)

使满血满蓝,并恢复技能和物品的冷却时间

-respawn (可以使用)

移动玩家到泉水(如果玩家死亡则复活玩家)

-startgame (不可使用) 输入后没有反应

设置时间为0:00, 小兵出发,游戏开始。

-spawncreeps (可以使用)

立刻产生一批小兵(三路),据说一次性刷过多会掉线

-spawnneutrals (可以使用)

立刻刷新野怪,会受到封野的影响。

-disablecreepspawn(可以使用)

-enablecreepspawn(可以使用)

停止产生小兵 / 启用产生小兵

-spawnrune(可以使用)

随机的在两个符点之一刷新一个神符

-killcreeps(不可使用)输入后小兵并没有死亡。

杀死所有小兵

15 / 23

-killwards(可以使用)

去除所有守卫(眼)

-createhero 英雄名称 (可以使用)

-createhero 英雄名称 enemy(可以使用)

创建一个英雄,后加enemy的话英雄加入敌方,否则加入友方。

-dumpbots (可以使用)

显示AI状态

-wtf(可以使用)

-unwtf(可以使用)

开关WTF模式(该模式下无CD,使用技能不耗魔,极少数技能除外)

-allvision(可以使用)

-normalvision(可以使用)

开关全视野模式,在该模式下玩家将拥有双方的视野。

3.3.1聊天栏

设计测试用例:

1)输入正常文字

预期结果:正常显示。

2)输入以"-"开头的字符串;

预期结果:发出后无反应。

3)输入"//""/"

预期结果:"//"不会发出"/"正常显示。

4)输入颜文字"w(Д)w"

预期结果:正常显示。

手工运行测试结果:

1)测试结果:与预期结果相符。

2)测试结果:与预期结果相符。

3)测试结果:与预期结果相符。

4)测试结果:w(Д)w发出后显示的是w(Д)w,与预期结果不符

16 / 23

插图

发现BUG

1)当输入法不切换回英文输入法按下键盘任意一个键5秒游戏会卡,之后一下卡一下,这

时切换回英文输入法就会解决此问题。

2)当输入法没有切换回英文前,用alt+tab切换到其他应用程序,再切回DOTA2ALT

键会默认为按下状态,再次按下可以解决此问题。

17 / 23

3.3.2 地图整体平衡测试

作者创建了一场自定义战斗,除了作者自己以外没有任何人或电脑,仅仅只让双方的小兵互相推进,上图

是将其放置1小时后的结果。左下角小地图:绿色夜魇,红色天辉)

很明显夜魇方的下路已经被破,而天辉方只是血量稍空,显然对天辉方有利。

依照这一个数据来看,当双方人数都为5且实力相当的时候,天辉方的胜率会大过夜魇方的胜率。(单单这

一场来看)

本场比赛在61分钟时天辉方获得胜利,夜魇失败。

3.3.3 争议技能道具测试

1)

动力鞋(假腿) 总价:1400

主动:属性切换-将附加属性在力量、敏捷以及智力三者之间切换

移动速度提升效果不与其他鞋子叠加。

+50移动速度

+8选择属性

以下这些都是作者在网上找资料时所发现的有争议的一些技能或道具的使用情况。

怒切假腿

18 / 23

+30攻击速度

极限发球 总价:2100

+10所有属性

操作方法及原理:买动力鞋,然后把动力鞋快捷键设为回车,怒按回车速度达到每秒100次,就超越

了人类反应的极限,于是看起来是全属性+8,性价比堪比极限法球!

这里说的100次太夸张,在本地延迟29ms的情况下,算上键盘按键与电脑反馈速度的1-5ms,每秒

也只能达到28左右,但当使用按键精灵工具时效果据作者统计能达到每秒40+,按照动力鞋1400

价格和极限发球2100来比确实有的一比。

2)

闪烁匕首(跳刀)

主动:闪烁 - 传送到最远1200距离的位置。如果受到攻击,闪烁匕首将在3秒内无法使用。

跳刀刷新发条

发条技师

能量齿轮

用通电的齿轮在发条技师周围形成一圈障碍物,困住贴近的单位。在外侧的敌人碰到齿轮会被电流震

退,损失一定的生命和魔法。 一个齿轮发动过一次震击后就会报废。敌人攻击齿轮数次后可将其摧毁,

而发条技师只需要攻击一次。

齿轮可以震退隐身单位。

魔法消耗:50/60/70/80

冷却时间:15

技能:无目标

持续时间:5/6/7/8

伤害类型:魔法

魔法/生命 损失:80/120/160/200

无视技能免疫:否

摧毁齿轮的攻击次数:2/2/2/3

19 / 23

操作方法及原理:跳刀刷新发条要看准位置,跳到对方5人身后使用能量齿轮全部将他们弹到一边,

瞬间刷新,再次使用跳刀跳到另一边能量齿轮,又将他们弹回来,就这样把他们5人夹在两个齿轮中间弹

来弹去,短短几秒钟敌人便全部被弹到红血。

上面方法原理如下图所示

下面是游戏实测图:

但是因为一个齿轮发动过一次震击后就会报废所以5个人是不可能成立,人数最多1-2人,所以与预期结

果不相符

3

白虎推推极限晕

原力法杖(推推棒)

主动:原力 - 将任何目标单位向其面对方向推进600距离。双击对自身使用。

米拉娜(白虎)

20 / 23

月神之箭(神箭)

射出一支绝对精准的箭矢,对第一个击中的敌人造成大量伤害并眩晕目标。目标距离越远,眩晕时间

秒。基于距离还将对目标额外造成最多100点伤害。 越长,最短0.5秒,最多5

神箭每飞行150码,中箭后眩晕的持续时间将提高0.5秒,额外伤害增加14点。

月神之箭可以射中隐身单位。

魔法消耗:100/100/100/100

冷却时间:17

技能:点目标

攻击力:50/140/230/320

伤害类型:魔法

射程:3000

无视技能免疫:否

最短眩晕时间:0.01

最长眩晕时间:5

最大额外伤害:140

跳跃

米拉娜的坐骑向前跳跃加入战斗,着地时发出一声凶狠的咆哮鼓舞友方单位,提升攻击和移动速度。

速度加成持续10秒。

可以使用跳跃躲避攻击和技能弹道。

魔法消耗:40/35/30/20

冷却时间:30/26/22/18

技能:无目标

距离:600/700/800/900

移动速度增加:4%/8%/12%/16%

攻击速度提升:8/16/ 24/32

操作方法及原理:距离敌人太近,故意朝反方向走一段路,然后再射。大多数情况下在箭还没到敌方

英雄身上时,一个e,一个跳刀跳到敌方英雄身边。接着一个推推棒将他往我方队友方向一推,就在他被推

过去之后的一瞬间,之前的箭正好射在了他身上。

21 / 23

月神之箭飞行距离越远眩晕时间越久,利用原力法杖的特性将敌人推向箭的落点,这个是真的可以做

到。

4

影魔三炮齐鸣

影魔

毁灭阴影(影压,炮)

影魔对其正前方区域发出毁灭能量,对该区域中的敌人造成伤害。

魔法消耗:75/75/75/75

冷却时间:10

技能:无目标

攻击力:100/175/250/325伤害类型:魔法

距离:2004507003个距离)

无视技能免疫:否

操作方法及原理:影魔的影压范围分别是前200450700,半径275的一个圆。这也就是说,

一个点ZXC三炮都可以同时打到的,玩过影魔的应该都知道。这个点的位置,就在身前425-475

的地方,仅仅只有50码的范围。三炮齐鸣,便是在对手处于你身前425-475码的时候,同一时间打出ZXC

用一个施法前摇,同时打出ZXC三炮,判断一个人是不是使用出了三炮齐鸣,看他身前三个影压是不

是同时出现便知道了 。如果要同时打出三炮,这需要你的三根手指同时按下ZXC键,并且和跳压一样,

不能有1毫秒的误差。

依照测试是不可能做到的,作者将影压的3个快捷键使用宏(脚本)绑定在一个按键上,这样可以确

保是3个同时按下,但是这时只会打出一个,另外两个是不会出来的,原因应该是英雄模型在释放影压技

能时会有一个手部动作,所以这个与预期结果不符

22 / 23

4 结论

DOTA2DOTA中的角色摆脱魔兽的桎梏做了大量细致的工作,为他们提供了新的风格,在一个专

业的制作团队的帮助下,属于DOTA2的天空更加广阔。作为一个Steam的免费游戏,玩家想入门很容易,

但是真正的挑战却是如何保证新玩家们能在学习、游玩和享受DOTA2中获得持续的乐趣。毫无疑问测试

过程中遇到的最大问题是需求的不确定性和需求的变更。DOTA2是目前最为优秀的MOBA类游戏,提供

了超过100个精心设计的英雄,DOTA2的地图显然还有着微弱的不平衡,需要仔细去钻研。本次测试由

于主要是手工测试,因此未能实现对一些功能的进行大量数据操作的测试, dota2虽然是一个游戏,但仔

细思考之后还是有很多值得测试的内容,例如DOTA2到底继承了DOTA的百分之多少、防御护甲机制稳

定性测试等等。从本文的分析中也可以看出,本测试依然是十分简单的测试,可以考虑的因素还有很多。

参考文献

文献 作者/出处

软件测试技术[M] 路晓丽、葛伟、龚晓庆等

[心得] 浙大学生论文:Dota护甲系统完全解析[D] 王君迪

黑盒测试[EB] 百度百科

DOTA2[EB]

DOTA[EB]

Dota指令大全[EB] 百度文库

黑盒测试不等于手工测试[EB] 百度文库

软件测试技术[EB] 百度百科

百度百科

百度百科

23 / 23

-

DOTA2黑盒测试 软件测试论文

更多推荐

steam好友网络无法连接