游戏测试 关于测试的那些事——配置检查

三羊 · August 07, 2022 · Last by 今晚打老虎 replied at August 08, 2022 · 7523 hits

前言

  • 想当初刚入行的时候,只想写一个自动化工具来帮我跑功能,开始研究 adb,后来学习 Airtest
  • 岁月飞梭,学的东西很多,但是成果很少
  • 后来才知道,UI 自动化测试是一个成本极高收获甚少的路

为何要做配置检查

  • 配置是由一个策划团队来进行更新维护
  • 无论线上还是开发版,配置出现 BUG 的占比都很高
  • 相比单元测试,接口测试和 UI 自动化测试门槛低,收益高

搭建简易架构

  • 编程语言选用 python

处理原始数据

  • 配置的原格式一般都是 json,xml,csv,lua 等,均统一转换成 json 格式
  • 定义一个 Config 类
class Config(list):
    def __init__(self, *args):
        super().__init__(*args)
  • 测试的 json 数据如下,用 json 模块直接读取
[
    {"id": 1, "name": "1"},
    {"id": 2, "name": "2"}
]
  • 读取后的 py 数据如下
demo_data = [
    {"id": 1, "name": "1"},
    {"id": 2, "name": "2"}
]
  • 定义配置类,配置类继承 Config,传入数据时,应该传入字典列表,如果数据不是字典列表的形式,需要根据数据修改代码
class DemoData(Config):
    def __init__(self):
        super().__init__(*demo_data)

测试架构选择

  • 现在测试的数据已经处理完成,我们的数据格式是字典列表
  • 字典就是配置中的一行数据,现在我们需要对每一行数据进行检查
  • 有两种方法:一种是使用 pytest.mark.parametrize() 装饰器拆解数据,另一种是使用 ddt 和 unittest 结合的方式来拆解数据

选用 pytest 测试架构

class TestDemoPyTest:
    @user1ize('demo', DemoData())
    def test_id(self, demo):
        assert demo['id'] > 0, "id不大于0"

选用 unittest 测试架构

@ddt
class TestDemoUnitTest(unittest.TestCase):
    @data(*DemoData())
    def test_id(self, demo):
        self.assertGreater(demo['id'], 0, "id不大于0")
  • 两种方式都是将 DemoData 类的列表数据中每个元素分别传入测试方法,有多少数据就会测试多少次

总结

简易的架构搭建这就完成了,希望对大家有所帮助。

共收到 9 条回复 时间 点赞

没太看懂,这个架构怎么测配置呢?

三羊 #2 · August 08, 2022 Author
陈恒捷 回复

改了一版,你再看看这次描述的怎么样

三羊 回复

清晰不少了。

这。。。

看的有点懵,这个是做什么的呢?要达到什么效果,自动化怎么测这些,看的不是很明白。

说了好多,但没看明白中心内容是什么

三羊 #7 · August 08, 2022 Author

@tangoliver @luojun0115 游戏行业里面,一个项目会有游戏策划手动配置的数据,比如角色的升级经验,这个文章就是做一个检查这些数据的是否正确的自动化测试架构

确实没看太明白,
1、楼主提到的测试架构(pytest,unittest)是给谁用的,如果给策划团队使用,是否还需封装成接口,或者提供 UI,然后还有要使用说明。
2、测试架构与配置文件是如何交互的,如何解决现有效率、质量问题的呢

拜读一番后感觉你应该大概也许可能是想讲点偏场景类 (配置检测) 的测试方法,最后却讲成了用例数据的传入处理方式

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up