新手区 来自入职半年多游戏测试新人的迷茫

wonderrr · 2021年02月26日 · 最后由 wonderrr 回复于 2021年02月28日 · 527 次阅读

来自入职半年多游戏测试新人的迷茫。
先介绍下自己的情况,我是来自非科班的,因为之前听别人说测试门槛相对于其他职业来说低一点,所以通过自学从而幸运地进入到游戏测试行业的,自己对于代码可以说是基本不懂,现在也只是大致了解了一些 python 的基础用法。入职半年多,平时所做的工作全是点点点,可以说入职这么久,只是从一个零经验的新人,成长为一个点点点工,并且对游戏行业更加的了解了。我个人对点点点并不是很反感,因为我的想法是即使是做黑盒测试,也是可以做到高水平的,但同时我又心里不希望以后的工作只有点点点,我更希望往侧开方向靠拢,能够独自编写一些脚本或工具来提高测试效率,可是我自己并不知道自己按什么路线去达到自己想要的效果。在无意中发现了本站,也会偶尔在站内看别人的文章或分享,站内游戏测试方面的文章虽然不算特别多,但是很多我都看了,其中煎饼大大关于游戏测试小工具的文章,看得我十分激动,我知道这就是我想要努力想做到的事情。站内很多文章我都看不懂,感觉自己真的很弱,就觉得自己在学加减法,大佬们都在讨论高数了,深深的距离感使我自己感到迷茫。所以发帖求助,表达下自己的想法,渴望能得到一些前辈们的建议。
目前我自己有如下两个目标:
目标一:
我希望自己是能够通过代码来实现一些小工具(如批量一批拥有一定功能的号,编写可以修改协议的工具),对于上面的两点,我现在了解到的也只是一些十分表面的东西,我的理解是拿到协议(应该是和 ProtoBuf 有关)》修改协议数据》发送协议到服务器》服务器响应结果,就大致能达到我的想法。但是其中具体的内容,我是一头雾水的,根本不知道怎么去下手,即使是网上自己找资料,也只是找到很多零零散散的资料,我很多看也看不懂,基本上对我来说帮助不大,不知道是不是我基础太薄弱的原因,如果需要从基础出发,我应该从什么书籍里可以获取到上面所涉及方面的知识呢?
目标二:
我希望自己能够完成性能测试或并发测试,之前听别人的分享,看到别人可以用 Jmeter 创 100 个号去打 boss,我就知道这就是我以后想要做到的事情。可是我对于这个我也不知道如何下手,也就是自己百度 jmeter 性能测试,跟上面提到的一样,很多零散的资料,看的一头雾水,而且感觉网上很多资料根本不能拿到工作中来使用,因为网上大多数都不是游戏性能测试,而只是拿网页来测试,所以我这条路也一时间走不下去了。也是希望前辈们可以指点一下,如何进行游戏性能或并发测试。
自我剖析:
我一开始的期望是,工作前一两年打好测试基础,培养自己的测试思维及工作习惯,主要组内平时也没有侧开大牛,在我的视角来看是经验老道的黑盒测试者,没怎么看他们自己有编写工具的,所以想请教人指导这条路也断了,就只能靠自己利用下班时间来努力发展一下。由于现在所待的项目组并没有很忙,自己还是有时间来学习其他内容的,所以我有了发展黑盒测试之外的技能,从我自身的想法出发,我觉得测试是需要保证好版本质量的,而提高版本质量,我们不是不能够做到,我经常是在看文档时就会给策划提一些建议,在我自己看来,这算是测试文档(检验文档是否充满合理性,可实现性,吸引性),我们可以通过自己和开发、策划的前期沟通,达到一些想法上的交流,毕竟我的感觉是做游戏,最终是做出一个能让大多人接受并想玩的游戏,这是一个涉及摸索人性,人的习惯的结果。要研究的是怎么让 “人” 来好好玩我们的游戏,所以测试的建议也是不可或缺的。我一直相信我们测试并不是简单的 “背锅” 团队,我也看了很多文章,我了解到我真正想做的也是测试驱动开发。但是想法总归只是想法,最应该的还是提升自己的硬实力,入职这么段时间,我问自己,成长了吗?但是有的,但是如果一年后两年后 N 年后呢,我会不会只是个只会点点点的测试员,我深深清楚到自己并不是想成为只会点点点的人,我想拥有技术,用技术支撑自己的测试,再过半年,我想我会成为接触更多功能的黑盒测试员,但希望并不局限于黑盒测试。恳求各位前辈指导或提点一下学习方向。我应该继续学 python 吗,还是放弃 python,转而学习下 java 会更好,或者看什么书籍能够对我有更好的帮助呢?
以上,就是我的疑惑与迷茫,希望各位前辈指点或评价一下,我想提高自己,而不是做一个原地踏步的人。
元宵节快乐

共收到 5 条回复 时间 点赞

是这样的,说下自己个人见解,先从目标一和目标二来说下,先拿 Python 技术栈来说,无论目标一还是目标二都是一个混合多个技术栈大目标,但是测试不仅仅只有这些。
目标一:
逐步系列可以参考https://testerhome.com/topics/27935
如果性子比较急可以参考 https://testerhome.com/topics/24240
简述下过程,拿 Tcp +pb 举个例子
协议接口是做得最外层 controller 中得 apipath,这个需要做过 controller 和 service 和 model 得更好理解。
只是游戏得这个 apipath 是通过几个结构体信息去拼接到一起的,而不是一个直接对象的拷贝。
通过 socket 去模拟客户端链接服务器,链接后 先需要按项目要求 把包头和包体拼接成一个字节数组(包体部分就是用 pb 序列化 pack 到包体部分),然后通过 send 拼接得字节数组 发送到服务端。服务端开始处理(这部分不用考虑),服务器验证协议发送正确后,回包给客户端,客户端开始进行解包(这部分 Tcp 涉及处理粘包),会收到多个包,根据包里面的命令号去决定是否要解哪个包。
解包需要做 pb 反序列化 +pb format 变成可读的 dict,dict 里面需要取出一些变量存储内存中,其他地方可以用到。(这个就是所谓得上下文,也是基础级别得)

目标二:
jmeter 做压测,支持的协议是需要开发 Java 转换成 Jar 再载入进去。并且 Jmeter 还需要对设置进行优化才能提供到生产那边。Python 来说 Locust 似乎也是不错的选择,原来开源了 Tcp+ 非 zeromq 版本的,后面删了。
你可以先试试 Python 栈的这个,做压测需要了解网络模型和异步 task。
目标二建议有一定基础项目,可以读源码解决问题时再开发做。

Python 可以先集中到一定阶段后,再建议换一门语言,Java 和 Golang 都是不错的选择。
Python 之前有个一个小标准,建议可以参考下,之前只对自己有这个要求,这样才能再开发上面得心应手,数据结构设计和运用时可以心到手到。
1.各种数据结构转换 和任意位置插入,删除,查找。(面向对象,就是知道对象是啥,如何转换对象进行衔接,用别人的 Apier 和自己写 api 这个是最基础的)
2.熟练掌握类,类动态增改复位对象,类里面成员函数,类变量,实例区域里面得对象存储起来,在上下文中如何使用,了解时序的概念。 python 是推荐用面向对象编程得语言。1 和 2 最好都要做到不查资料就能写。
3.掌握有限状态机和标志位写法。(2,3 二条可以避免代码是看起来串一起的,这个不影响可读性也不是花式写法)
4.反射应用熟练,掌握 Python 常用得魔术方法(约 12 个)并且不用查资源都知道返回对象是啥。
5.掌握 Python 语言核心特性,闭包装饰器,偏函数,列表推导式,字典推导式和 Python 一些便利写法。(推荐看下巴西开发者 写得书)
6.掌握常规的数据库使用方式并且做过封装,会跨数据库数据和跨表查询(这个很关键吧,后者我搞不懂为啥只要求开发会)

似乎没看到四大模块中的自动化,其实游戏自动化已经变化很大,只有加了核心步骤和控件就不在原来界面了,才会需要大改。只是换了位置和大小修改,加了非核心步骤,是可以做到维护脚本的。

自动化本身跑的就是功能测试用例,可以做任何你想得到得结合都行(我自己规划组件数量可以有 70 个,目前所效力得公司才做了 6 分之一不到。)
e.g 自动化不想跑新手引导,可以下线调用接口测试那边跑完新手引导,也可以修改数据库后重启服务,获得标志位,再次上线。

也没有看到持续集成 CI/CD 分别是 2 个东西,内容还是挺多的。Python 对 Jenkins 库 Api 支持也是极好的。
工具才是大头吧,工具对比四大模块比例是 7:3 设置更高。

似乎前期都不用顾虑和思索比较深,先钻进去学吧(这里面不包含多线程/进程,协程,锁等等),就算做框架和产品也不是全部想清楚就不会中途修改和优化的,代码数量和工具项目引发的量变一定会质变,代码写多了用开源才能得心应手啊(手动猫头)
游戏测试要掌握技术栈可能要比互联网测试多的多,语言才是硬道理,但是测试如果喜欢他钻研进去就不仅仅是职业。回复太多了。有点长,慢慢看。

楼上是大牛,我不看内容,只看文字长度都觉得是个好领导,有耐心的前辈

gaodq 回复

老脸一红,学习中学习中。

陈子昂 回复

感谢大佬的回复与指点,我会好好去学习的。
提到的内容我有以下回复:
对于目标一的回复:
大佬的这几篇网络编程文章我之前有看过,但是没有细看,有时间我会去研究一下,流程上的东西看了大佬的解释也大概知道是怎么回事了,但是就不懂怎么用代码也实现其中复杂的逻辑,我是直接拿协议文件来用呢,还是通过其他方式先截取客户端发给服务端的包呢,而后续是否可通过 python 与游戏的服务器建立连接,只要按原本客户端的协议格式发给服务器即可。我会先看看 python 网络编程方面的书籍或知识,感谢。

对于目标二的回复:
Locust 我自己百度了一下,好像需要一定的代码基础,我先学一段时间 python 后再去研究这个了,因为现在项目里大家基本都没有压测,所以这个可以放一下。对于提到的 python 小标准,我确实是一个都看不懂,我离这些目标差的确实很远,看来是需要一段时间的潜心学习了,感谢提出标准,我会尽量按标准来。对于第六点我有个疑问:在工作中跨数据库数据和跨表查询一般是什么情况下用到的,可以举个例子吗。

对于自动化的回复:
我没提到自动化是因为项目里没有做这方面的东西,所以我没提这个,但是我觉得还是很重要的。我的想法是学自动化来跑新手教程和测月活动,之前自己也是看了下 airtest 方面的东西,但网上普遍的教程都是拿 app 来做示范的,对于游戏方面的比较少,所以了解的不够多,并且看了挺多人说自动化维护成本高,我想着如果就我自己有这种想法的话,现在接触可能有点过早了,所以我把自动化的优先级放后了点。同时想请教下,如果想用 python 来自动化测游戏,那么也是通过点击定位元素的方式来测吗,是怎么来实现的呢,如果只是自动化测试月活动数值,是否代码量不会太多呢。

对于持续集成 CI/CD 的回复:
这个我真的不知道是什么,平时的工作内容没接触过,不了解,有空我会看看的。同时请问下四大模块是指什么呢?

对于最后一段话的回复:
看来我现在想的有点太多了,我先钻进去学一段时间吧,因为说句老实话,平时的工作中真的很少用到什么其他技术,真的只是黑盒测试,测测功能,测测活动数值,普通的点点点,我是真的不清楚那些技术到底能用来干嘛,如果能有点例子来帮助理解的话就很好了,希望以后有大佬分享知识的时候能够举个工作中的例子,这样可以帮助理解。因为都不知道在测游戏时可以怎么运用上这些知识的话,我就不知道学来干嘛了,有点感觉学了没什么用的样子,我还是想让自己学的东西大部分是用来提高工作效率的,而不只是为了扩展工作外的内容。

再次感谢回复。

陈子昂 回复

持续集成 CI/CD 。就是指平时我在工作中经常用到的打包吗。。。好像那些都是程序来弄的 我就只会点个打包

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册