• 选择最重要 不一定啊。其实大野(非大厂)一直藏龙卧虎,认识一批人类似橙卡的。另外感觉都去大厂的话,这个行业也就没啥精彩了。

  • 你真的会开发测试框架? at October 02, 2019

    开发框架,先得定下开发所有的库和知识栈,跟随业务开发需求和差异性修正在多次迭代。
    如果先把基础工具类和通用性以及内建通信定义好,在写框架还是蛮快的。

  • 功能测试有框架吗? at October 02, 2019

    功能测试 又可以叫 版本测试,验收版本功能 是否开发完整,是否需要一致,逻辑正确。
    那么自动化测试框架和接口测试框架 都可以验证对应前端和后端返回。是指这个嘛?

  • null at October 01, 2019

    我们公司。

  • 专项分类(前端性能,后端性能,数据库)
    1.前端性能:监听为主,但监听数据需要在过程中插入具体场景,现在一般流行和自动化配合。
    2.数据库:通过协议接口和压测对某个数据库读写要求频繁的接口和实时写入非缓存业务设计后进行测试,减少数据库慢查询。
    3.接口项:可异步或者同步,填充结构体差异和顺序问题的协议安全(无效等价类),验证具体数据有效等价类,协议接口功能测试。
    4.压测:异步 验证后端性能
    5.工具:只有你想不到,随着测试部门发展,大小工具会占比最大,这个回头会专门开个帖子。
    6.基础建设&持续集成
    7.安全:部分业务和协议安全类似,只是协议安全注重结构体和顺序上做文章,这个关注数据包。还包含了支付安全,验证混淆,apk 安全等。
    8.用户体验。
    9.带 IP 的 IPQA。
    游戏测试分为项目组测试 和测试开发。
    测试开发分为 3 种模式,独立开发框架/工具,和开发配合开发,使用开发出来框架和工具。
    项目组 QA 怎么和测试开发或者开发打配合这个看公司。

    需要知识支撑:
    网络层知识:做后端测试的需要理解网络知识,TCP,UDP,HTTP 族,WEBSOCKET,KCP 原理,知道窗口滑动,知道如何确保包不丢失。
    图形学知识:像素填充率,GPU 和 CPU 运行关系,drawcall,fps 计算公式,不同引擎层面的计算模型,unity 不同 UI 插件优劣。
    开发能力和读代码能力。短期是 1-2 门读写语言,发展到 5 年以上,建议要 6 门语言,不同语言分别不同作用。如果人多点 可以大家分下语言专精。
    短期 1-2 门,一门是 python,一门是公司最主要的后端和前端的胶水语言 比如 lua.
    长期 6 门 动态语言:python lua 一门前端语言,静态语言平台用的 java,3D 公司的 c# unity,C++

    能解决什么问题:
    理论一点点来,团队成长后,来说你想解决的问题都可以解决。
    细到 验证某个接口效率,屏蔽字有没有效果,配置文件是否生效,某个文件是否可以乱码,是否代码混淆了,是否关闭了某个包 GM 开关。
    中到 验证所有副本掉落正常,自动补发奖励,快速过新手引导,阵容平衡性,工会战前端性能,场景内特效例子数在 10 秒后浓度,验证是否销毁。
    大到 平台到自建工具到游戏性能开销,服务器执行覆盖率检测,一个游戏接口加自动化覆盖 40% 等等,没有客户端渲染的类似脱机微端带 1:1 真实流量的打压功能。
    绑定 jenkins 可以走定时策略和上下文执行顺序。

  • 一条有效等价类,配合 1 条以上的无效等价类。
    成功条件 除了等级不够外,最好加上开启师徒申请的操作步骤。
    如果满足等级够,还有成功后的对应信息和界面变化,对应 失败条件也是最少 1 条以上的无效等价类配比。

  • 读文件为啥要用 while True..还要在包一层 try...finally.

  • 🎁 👑 国庆节快乐。

  • 加油~

  • 不好意思,前几天忙,已经处理了,看看加了没有~

  • 已经处理了。看看加了没有~

  • esc 后,还需要操作别的,需要在空白处点击一次定位确认句柄,当然有些网站不用,这样写比较安全。

  • airtest 只有类似比如启动后判断屏幕和包相关的。

    rom airtest.core.android.constant import ROTATIONWATCHER_APK, ROTATIONWATCHER_PACKAGE
    

    目前我这边解决方式 开发函数,是在会出现弹框的地方,等待 5 秒,如果 5 秒内判断出现弹框元素后,用封装好的方法处理。如果 5 秒以后或者已经处理过,就继续。

  • 上次附件需要做一个文件 md5 和大小检查,其实主要是核心在传送文件对象前计算下文件大小,然后在服务器那边用弹性的计算下缓存区,并且算下已接收大小。

  • 这个场景会出现的,但不好修,一般不会信任客户端计时方式,真的会倒计时那么久就要修复。
    PS:可以用这个 BUG 看看一些游戏 是否会打开未开启的活动,这样就可以提前几天知道活动是什么了。

  • 感谢,有赞后 我会持续写的。

  • 可以抓包来做,先搭建一个架子,有多少先做多少。
    然后例子多了,在考虑开发一个挡板,挡板是 mock 的灵魂啊,然后 mock

  • 发了的,在另外一个帖子里。。

  • job 有默认路径的,你路径确定对吗。

  • tesseract 配置好环境变量和最好是有字体库,一般是提前截图和预处理(可以缩小提高精度).Ocr 是做美术字识别
    另外 airtest cv2 没有完全 open.

  • 要看稳定程度,自动化也可以很稳定,看你怎么写。。

  • 拿文档,当前语言调 C++ 动态链库做接口,自己写好接口调用层和验证处理层,不过得对方编译好后给文档,因为内透不了。

  • 比如不喜欢用 rb 和 wb 的 msgpack 库做 dict 文件序列化,可以用 ujson 比 json 转储快内存低。

  • 比如可以更换更好的链接方式 基于 python locust

    def get_errCode(self, err_id: int) -> str:
         """使用 connect_ex根据errno获取errno字符串信息
         正确返回0,错误返回errno
         """
         if err_id in errno.errorcode.keys():
             return os.strerror(err_id)
    
     def socket_connect(self, ip_port: tuple, r_type:str='game_connect', m_name:str='socket_connect'):
         """game socket链接"""
         s_time = time.time()
         res = 0
         try:
             res = self.connect_ex(ip_port)
         except Exception:
             err = self.get_errCode(res)#失败返回errno
             ed_time = (time.time() - s_time) * 1000
             events.request_failure.fire(request_type=r_type, name=m_name, response_time=ed_time,
                                         exception=err)
         else:
             assert res ==0
             ed_time = (time.time() - s_time) * 1000
             events.request_success.fire(request_type=r_type, name=m_name, response_time=ed_time,
                                         response_length=0)
    
  • 很不错,加油吴总