[转载]ChatGPT:智能化游戏测试的新尝试
转自公众号
网易雷火测试中心
02 试用案例
1.
代码生成
代码生成是作者打算尝试使用ChatGPT的初衷,一直好奇ChatGPT到底能不能写出高质量的代码,想看看是不是接下来就要被AI卷到下岗了...在这部分里,作者描述了一些需求给到ChatGPT,希望他能够根据需求描述来生成解决问题的代码。
(1)工具代码
以一个简单的平台工具的需求为例,看看ChatGPT能不能搞出来。
“用flask 实现图片上传,并且在页面上显示上传的图片原图,缩略图,灰度图,设计好看一点的css样式。”
接下来,您可以使用以下代码来实现上传图像并显示它的原图,缩略图和灰度图。请注意,以下代码将图像保存在服务器上的“static/images”目录中,这需要您先创建这个目录。您还需要在templates文件夹中创建一个名为“index.html”的HTML文件来显示图像和样式。”
※ 问:
“
“File "C:\Python37\lib\site-packages\jinja2\loaders.py", line 113, in load source, filename, uptodate = self.get_source(environment, name)
File "C:\Python37\lib\site-packages\flask\templating.py", line 60, in get_source return self._get_source_fast(environment, template)
File "C:\Python37\lib\site-packages\flask\templating.py", line 89, in get_source_fast raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: index.html”
”
(2)脚本编写
”好的,你可以使用Python中的requests和BeautifulSoup库来爬取网页数据。以下是一个示例代码,可以爬取该网页的标题、作者和正文内容:”
运行上述代码,你应该能够获取到文章的标题、作者和正文内容。当然,具体的代码实现方式可能因页面结构、网站反爬虫策略等因素而略有差异。
※ ChatGPT:
“可以使用Python的os和shutil模块来删除文件夹及其子文件夹下的所有svn文件和文件夹。以下是一个实现示例:
(3)语言转换
※ ChatGPT:
同样的,在日常工作当中,还会遇到一些场景,原来在windows下或者linux下运行的脚本,现在我们需要拿到另一个平台上去使用,这时候也可以拜托ChatGPT帮忙把脚本做个跨平台的转换。
※ 问:
“把这份bat脚本转成linux 下可执行的脚本 。”
cd dailybuild/pkgs for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
“以下是将 Windows 批处理脚本转换为 Unix/Linux Shell 脚本的代码:
2.
代码分析
ChatGPT能够快速的阅读代码,并且给出分析。从作者的实际体验来看,ChatGPT的这项能力已经足够帮助到我们日常工作中理解代码了。总得来说,他可以帮助我们完成代码理解,代码纠错,以及代码优化这几个方面的工作。
(1)代码理解
在示例中,随意给了ChatGPT一段代码,看看他能不能够理解这段代码干了些什么事情。
※ 问:
“理解下这份代码,并给出中文注释。”
※ ChatGPT:
“以下是加入了中文注释的源码文件,在这段代码中,有一些问题和可以优化的地方, tasks 字典中的新任务 ID 是通过全局变量 idcount 来实现的,但是在添加任务时 idcount 始终为 1,因此新任务 ID 不会增加。应该在成功添加任务后再自增 1。”
※ 问:
“请帮忙看下这段代码有没有问题。”
※ ChatGPT:
(3)代码优化
ChatGPT也可以做一些代码优化上的工作,使代码更简洁更高效,我从leetcode上摘了答题的代码给到ChatGPT,测试下他的优化能力。
※ 问:
“请帮我优化下面这段代码。”
※ ChatGPT:
“这段代码的作用是计算从左上角到右下角的所有可能路径数量,其中包含障碍物的位置不能被经过。代码已经比较简洁和高效,但还是可以做出一些小的优化:
1.将int类型的变量赋值为0,可以直接使用初始化语句int[][] dp = new int[m][n],无需显式地将所有元素赋值为0。
2.在两个for循环中,可以使用while循环替代,更加简洁和高效。例如:
3.可以使用更具有描述性的变量名来增加代码可读性。例如,使用row和col代替i和j。
4.可以使用三目运算符来简化if语句。例如,可以将:
简化为:
3.
测试用例编写
※ 问:
“某游戏圣诞节活动新增了一个种圣诞树送礼物的玩法,规则如下:
请根据上述规则设计玩法的测试用例,测试用例样例如:测试点-预期测试结果。”
※ ChatGPT:
4.
文本辅助
(1)错别字检查
ChatGPT也可以辅助我们做一些错别字上的检查,当然ChatGPT对于中文的支持并没有特别的强大,所以会有一些误差,个人的感受是认为ChatGPT的错别字检查作为辅助参考是没问题的,但不能全信。另外,在问法上面也需要一些技巧,例如,把前面这段话稍作修改后让ChatGPT来尝试查找错别字。
※ 问:
※ ChatGPT:
※ 问:
※ ChatGPT:
“这段文字中没有明显的错别字,但是有几个表达不准确的地方:
1.“任务”这个词在“个人的感受是任务ChatGPT的错别字检查作为辅助参考是没问题的”这句话中,应该替换为“认为”或“觉得”等更合适的词语。
2.“辅助参考”这个词在这个句子中有些重复,可以简化为“作为参考”。
3.“对于中文的支持并没有特别的强大”这句话中,“特别的”可以换成“非常”或“十分”,更符合汉语表达的习惯。
(2)文本扩充
※ 问:
※ ChatGPT:
5.
其他
(1)解决方案脑暴
※ 问:
※ ChatGPT:
“当Unity中的美术资源不规范时,可能会影响游戏的性能。下面是一些可以优化美术资源的方面:
纹理:在Unity中,纹理是游戏中最常用的美术资源之一。使用大型纹理可能会导致游戏性能下降,因为GPU需要处理更多的像素。因此,可以优化纹理的大小和格式,使其更加适合游戏。
模型:高多边形数的模型可能会导致游戏性能下降。可以使用多边形优化工具来减少模型的多边形数。
材质:过多的材质会导致渲染时间增加。因此,可以合并材质以减少游戏中的材质数量。
光照:过多的光照计算会影响游戏性能。因此,可以使用简单的光照技术,如顶点光照或平面光照,来减少光照计算量。
物理:过多的物理计算会影响游戏性能。因此,可以使用物理优化技术,如物理翻转和刚体组合,来减少物理计算量。
UI:复杂的UI元素会影响游戏性能。因此,可以使用简单的UI元素来减少UI渲染时间。
声音:高质量的音频文件会占用大量内存和处理时间。因此,可以优化音频文件的大小和格式以减少内存使用和处理时间。
图集:使用图集可以减少游戏中的纹理数量,从而提高游戏性能。图集可以将多个纹理组合成一个大纹理,并在运行时动态加载所需的纹理。
※ 问:
※ ChatGPT:
“进行游戏的弱网测试时,可以按照以下步骤进行:
1. 模拟弱网环境:使用网络模拟器工具,如Network Link Conditioner(仅限Mac OS),可以模拟较差的网络环境。该工具可以让你设置网络速度、延迟和丢包率,从而模拟不同类型的弱网环境。
2. 测试游戏的在线功能:使用测试账号和服务器,测试游戏的在线功能,如多人游戏、排行榜、成就等。测试过程中,可以记录每个在线功能的响应时间和延迟,以了解游戏在弱网环境下的表现。
3. 测试游戏的稳定性:在弱网环境下,测试游戏的稳定性,例如游戏的断线重连、网络错误处理和自动重试等功能。确保游戏在弱网环境下仍然能够提供稳定的游戏体验。
4. 分析测试结果:分析测试结果,检查游戏是否存在性能问题或网络错误。根据测试结果,可以采取相应的优化措施,如减少游戏中的网络请求或优化网络协议等,以提高游戏的网络性能和稳定性。
5. 反复测试:进行多次测试,模拟不同的网络环境,以确保游戏在不同的弱网环境下都能够正常运行。
(2)日常问题速查
※ 问题1:
※ ChatGPT:
“在Linux下,您可以使用“du”命令来查看文件夹及其子文件夹的大小。这个命令可以计算目录的总大小并按照字节数列出每个子目录的大小。可以使用以下命令来查看文件夹及其子文件夹的大小:
其中,“-s”选项用于计算目录的总大小,“-h”选项用于以可读性更高的格式显示大小(例如,KB,MB,GB),而“/path/to/folder”是您要查看大小的文件夹的路径。
如果您想要查看每个子目录的大小,您可以使用以下命令:
其中,“--max-depth”选项用于限制查看子目录的深度。例如,“--max-depth=1”选项仅列出直接子目录的大小。您可以更改此选项以列出更深层次的子目录。”
※ 问题2:
※ ChatGPT:
在上面的代码中,首先使用datetime.datetime.fromtimestamp()方法将时间戳转换为datetime对象。然后,使用datetime.datetime.strftime()方法将datetime对象格式化为指定格式的时间字符串。在strftime()方法中,'%Y-%m-%d %H:%M:%S'表示格式化后的时间字符串形式,其中%Y代表年份,%m代表月份,%d代表日期,%H代表小时数(24小时制),%M代表分钟数,%S代表秒数。输出结果将会是一个格式化后的时间字符串。”
(3)数据库设计示例
“一张学生表,一张班级表,一张分数表,每个学生有姓名、学号、所属班级,并且有语文、数学、英语三门课的成绩,请帮我设计下数据库。”
分数表中记录了每个学生每门科目的成绩,以及学生和成绩表的外键关联,可以用于计算每个学生的总分和平均分等。”
“帮我生成一些测试数据。”
“给我上面测试数据的完整sql代码。”
03 ChatGPT VS New Bing
1.
ChatGPT的数据缺陷
ChatGPT的训练数据通常来自于互联网上的大量文本,这些数据可能存在偏差;另外由于ChatGPT的训练数据截止到2021年,之后的信息没有被训练过,这导致了ChatGPT给出的答案可能并不准确,比如我问,你知道游戏《永劫无间》么?ChatGPT的回答是这样的:
2.
搜索引擎New Bing
3.
ChatGPT VS New Bing
New Bing是一个搜索引擎,依靠ChatGPT的技术对自己的核心功能搜索进一步做了强化。他可以帮助你在网上找到你想要的信息。他也可以生成一些有趣的内容,比如诗歌、故事、代码等,这些都是基于自己的内部知识和信息,而不是从网上抄袭。
而ChatGPT 是一个AI系统,聊天机器人,它基于OpenAI的GPT-3系列大型语言模型,并使用了监督学习和强化学习来进行微调。他通过自己学习到的内容,来尽量模拟人类思考出结果并返回。
从结果上看
New Bing是基于ChatGPT结合了Bing自身的搜索结果再给出答案,同时在实时性上显的更加友好。New Bing给出的答案在实时性,准确性上会比ChatGPT更优秀,并且他会提供这些信息的来源并附上链接,就显得十分“有理有据”。
ChatGPT 在创造性内容的生成上面会更有优势,并且比Bing有更强的自然语言处理能力,在处理上下文信息比较多的时候,能够更好的串联起来逻辑,也就是交互性上表现得会更优秀。
总得来说,ChatGPT主要应用于自然语言处理领域的各种应用,而Bing主要应用于互联网信息检索和其他相关领域的服务。如果你需要进行自然语言处理任务,那么ChatGPT可能更适合。如果你需要进行信息检索和搜索,那么Bing可能更适合。
04 其他事项及注意点
1.
安全及隐私
2.
中英文的区别
ChatGPT 的训练数据绝大部分是英文,中文数据占比极少。github上的一份数据显示,在ChatGPT的训练数据中,英文占比92%,而中文数据的占比连1%都没有达到。虽然一部分数据可以通过中英对照平行迁移到中文,但是在实际使用中,还是能感受到一些中英文搜索之间的差别。首先是在反馈速度上,英文的反馈速度会更快,其次是在准确率上,英文的问答内容会更详细和准确。
ChatGPT可能会对不同语言的提问有不同的敏感度和反应。比如,对于一些涉及文化、历史、地理等方面的问题,ChatGPT可能会根据不同语言的数据源给出不同的答案。对于一些涉及逻辑、数学、科学等方面的问题,ChatGPT可能会对不同语言的表达方式有不同的理解和回应。因此,ChatGPT用汉语和英语提问答案会有一些差异存在。
05 总结
本文来自博客园,作者:泥烟,CSDN同名, 转载请注明原文链接:https://www.cnblogs.com/Knight02/p/17486589.html