前言
高仿真用户行为模拟可以使业务质量保障更加充分,优秀的程序设计也绝不会忽略功能在不同软硬件设备上的适配表现。所以,测试通常会引入兼容性测试、网络模拟测试、虚拟机测试等。这样不可避免的,会用到大量公共测试资源,如 机器设备(手机/主机等)、特征账号、虚拟资产......团队越庞大,资源越多,资源管理的难度就会越高,面临的异常问题也会越多。
伽利略曾提出一个“规模法则”,表达了如下观点:世间万事万物,都不能按照简单的线性关系放大。一个常见的例子就是,一颗树的长大,随着它越长越高,所关系到的体积和树干的承重力都是呈超线性关系增长的。团队里资源管理也是一样的,随着业务扩张,资源量增加,面临的问题和考验也是呈超线性关系增长的。
一些团队在规模较小的时候,使用手动管理的方式进行资源管理,但随着业务扩张,资源量达到一定程度的时候,手动进行资源管理就越发步履维艰。
为什么要做资源管理?
1.公共资源是流动的:公共的特征是服务于整个团队或者整个业务,必然有流动性。按需流动,数据和资源在流动的过程中也可能被改变。
如:一个线上仿真直播账号,在需要验证该场景的情况,账号会被用来开关播。账号是流动的,行为产生的流量和数据时刻被改变着的。
2.公共资源流动轨迹无痕:在每一次流动的过程中,如果没有手段加以控制和干扰,流动的过程就是无痕的,轨迹不可追溯。
如:一个物理设备,没有记录和规则约束,在一个群体中来回流动,其过程轨迹是无法追溯的。
3.公共资源本身的资产属性:一些资源本身具有资产属性,常见的有虚拟货币、账号中的虚拟权益、某平台的数字货币等。
如:某平台账号的现金余额、某兑换码对应的付费虚拟业务权限、某平台可用于打赏的虚拟货币、一个无限经费的电话卡。
4.公共资源具备的舆论属性:部分资源本身具备的舆论引导力量。
如:一个千万粉大V账号、一个创新活动绑定的虚拟荣誉、一个可全平台发放通告的权限账号。
5.公共资源的商业化风险:部分资源捆绑的创新商业玩法。
如:一个大型创新活动的测试账号上,留下了多个活动玩法分享和发布痕迹。
6.公共资源的密保属性:部分资源包含的密保信息。
如:一个抽奖平台的,具备绿色通道权限的账号(该场景为绿色通道用户不知情的前提下)。(不鼓励、不支持暗箱操作的行为)
上述的特性和案例都表明,在不被规则约束的情况下,这些公共资源的不当使用都有可能引发不同程度的事件。所以,公共资源的使用需要进行规范的约束和管理。
哪些资源应该被管理?
命中上述任意一点特征的资源都应该被管理起来,上面特征的每一种突发状况都有概率造成极其严重的后果。
试想一下,一个创新玩法如果被提前泄漏,商业化活动有可能功亏一篑、一个测试账号成为百万大v,平台的公信力将会直线下降、一个虚拟货币账号错误的打赏大额礼物给了素人主播,平台将会遭受资损、一批物理设备在不断的流动中遗失,团队需要筹集资金弥补空缺......
物理测试机、免流卡、虚拟测试账号、iap沙盒账号、特权权益兑换码等都应该被管理起来。
资源管理系统的设计和演进
笔者分享一下针对公共资源管理所做的实践和演进。
资源的管理首先要解决的是资源流动无痕、资产权限控制以及敏感数据回收的问题。这些问题可以通过制定规则和条款来解决,但依赖条款的约束并不是上策。百密一疏,难以从根本上解决问题。且耗费大量的时间在规章制度的培养和监控上。
不如用管理系统来解决这些问题!v1.0诞生了。
v1.0:审批流水线管理系统
管理系统将虚拟资源和物理资源按照不同的诉求类型做划分,存储在数据库中,并由指定管理员对资源使用做审批和分发。
借用和审批流程流水线化,记录持久化到数据库中。第一个无痕的问题解决了~
图1:审批流细节流程图
那资产权限控制和敏感数据回收怎么办?
如果使用资产行为和发送敏感数据只能在灰度环境进行。这样就有效地和真实数据做隔离了,无需约束和回收。
如果是线上仿真行为怎么办呢?
可以给公共资源打标测试属性,数据回收、统计、展示,都通过白名单和开关控制,既不影响线上用户,又不影响仿真测验。
(上述方法,需要依赖服务基础框架的支持,基础服务框架涉密,不做详细介绍)
好像问题都得到了解决,但是又碰到了新的问题。
问题1:分发的管理员分发虚拟资源过于随机,由此造成不便。
比如:胡萝卜功能的配置比较复杂,已经给 1 账号配置好了。但是 1 账号被借给了不需要胡萝卜功能的狐狸。需要胡萝卜功能的兔子,只能借用 2 账号,重新配置胡萝卜功能。狐狸不想要1账号的胡萝卜功能,它把这个功能配置删除了......后来,兔子每次都要花时间配置胡萝卜功能。
问题2:虚拟账号资源的密码就是钥匙,只要拥有1次,就可以拥有无数次。
比如:乌龟像管理员借走了1账号,用完归还,账号密码没有立刻改掉。翌日,小猫也向管理员借走了1账号。乌龟比较懒惰,它直接又自己使用了1账号,并且引发了资损。熊老大追究责任,发现记录上是小猫在使用,小猫百口莫辩。
v2.0:更完备自由的管理系统
如果功能域隔离和资源数据更新足够安全,是不是可以做到用户自由选择资源呢?
或许可以!
为了解决上述新的问题,2.0诞生。
1.在原有的数据记录基础上增加了域划分的概念,兔子拥有萝卜和草地,狐狸享受森林和野鸡。
2.虚拟资源的安全性需要得到保障:使用到期自动归还的策略,job机器人自动更改密码和相关信息、自动检查安全属性和使用状态。
3.权限管理也更加自由,可以指定兔老大管理兔子的诉求,也可以让兔子们自己审批,自给自足。
图2:系统资源类型划分、域划分及权限划分细节
图3:自审批流
(权限检查、密码更新等操作,需要依赖服务基础框架的支持)
到这里,资源管理基本规范起来了。我们再来看开头的几个问题:
-
资源流动过程中数据变化的问题 -> 如无需仿真,灰度的数据隔离可以完美避开这个问题;
-
借用过程无痕的问题 ->系统的使用流的流转,可以详细的记录每一次使用记录;
-
资源的资产属性 -> 资源打标和使用,通过开关控制,资产的使用完全和真实用户隔离,不会造成资损;
-
舆论属性和商业风险 -> 资源的灰度和特殊名单开关的控制,完全隔离真实数据和虚拟数据,无需清理,线上真实用户不可见。可以避免不必要的隐患。
-
密保属性 -> 定期权限检查,密码实时更换,确保一次使用对应一个密钥。
系统的使用和人为的约束是相辅相成的,系统可以尽最大的可能,保障资产安全,使每次资源借用捆绑到对应使用人。
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。