精通数据结构。。。
#7 楼 @ycwdaaaa 首先非常感谢那么认真的回复,写了那么多字呀!
我一个字一个字的看完的,就是希望跟坛友如此的探讨可行性。
我逐个答复一下上面的一些疑问哈,为了避免讨论变成各种 challenge,因为文章字实在太多,可能大家看的时候会有些跳跃。
工具值不值得投入
其实,我个人从这个课题的投入成本来看(1.5 个人,两周时间,即锻炼了新人,又给项目带来了一定的收益),是值得的。
我在社区里面贴出方案,其实是想听听不同的声音,顺便抛个砖看看能不能引出更好的、已经成熟的解决方案的 “玉” 来。并不是越做越迷茫,来求答案的,所以大家不要误会。
当前项目的问题优先级
其实做这件事的时候,我是有两方面考虑的。一方面是同事说每次发版一会感觉测试覆盖的场景不够,除了 case review 以外,对于字段的校验需要更多的检查(可能也是因为广告返回的字段太多让人产生了不踏实的感觉),因此我们需要更多的覆盖范围,而这个范围是可靠、可控的。另外一方面考虑的因素是,这种产品形态非常的时候做自动化,为什么不 尝试着解决一个现有的问题呢?还能锻炼成员,做一些有挑战性的事情。
关于技术人的情怀
其实就是 “我有一个锤子,想找个钉子” 的工程师思维,对吧?实际上我们解决问题的过程是这样的:团队开会列出最棘手的问题 -> 找出最短时间能解决的问题 -> 调研解决方案 -> 落地解决方案 -> 观察效果。
前三条问题
这个我们已经有流程上不错的方案了,只不过文章已经提到了,不属于技术讨论的范畴,流程的话可以单独拎出来说一下。RAP 我也有去看,之前调研的时候看了很多方案,在社区里翻了底朝天,但是这个产品太重,不太适合我们 SDK 的方案,所以没有去用。
环境问题
这个是历史原因,非常复杂,跨公司跨部门跨团队,而且领导层关注点不在这里,属于那种大家明知道有问题,却搞不定的困局,其中沟通的困难一时半会儿也讲不清楚的。
字段穷举
讲真的,如果真要是字段值的穷举法,我觉得我写那么一大坨也是白忙活了。今天有个朋友跟我说,我们的方案是从值的角度去设计 case,而不是业务角度去设计 case。怪我文章没讲清楚。我们在源头的模版定义的时候,会控制每个字段的取值范围,包括正常取值 [0,1,2,3,4] 这种有业务含义的取值,还有一种负面测试字段~[a,-1,null,@!#$] 类似这样的。而不是穷举一个字段所有的笛卡尔积再进行拼装。。。
运行时间
如文中所说,我们不到 3500 条 case 大概需要 75 分钟,因为手机分布式运行,数量还可以扩充。所以时间现在已经不是大问题了。另外我们不是穷举。。。
文件读写、数据库操作等
对的,接口很多是需要各种前置条件,修改 config,重启 service,清空缓存等等,如果这样的话,case 执行不知猴年马月了,而且还会带来很多不稳定因素。庆幸的是我们的 SDK 项目只需要校验前后字段的值,以及后期广告展示的效果(基于 UI 的),还有下载、跳转、打点等。
白盒、半白盒效率更高,case 设计有的放矢
赞同这个观点,我们在设计 case 的时候会考虑代码的条件分支走向,开发也会在我们运行结果后给出意见,来进行无效 case 的剔除,而我们要做的只是修改模版文件就可以。
错误的定位成本
这个疑问说到点子上了,过多的 case 设计未必是好事。定位错误的成本会越来越高,我们确实存在这个问题。方案是 case 的值变化比较明显,开发可以很快的判断这个或这一类的场景是否需要检查或 catch,成本略高,还没想到更好的方案
尽量自动化
如你所看到的,正在尽可能的多做自动化。。。
Client 端难道啥也不干,只校验 error code?
Client 端不是啥也不干,是后面的广告渲染、二次跳转、下载 APP、内开外开跳转、事件打点等等操作已经不能用我们这个方案来做了,此时用到了手工测试,考虑到复用性的问题,GUI 的自动化暂时还不打算引入。
最后,再次感谢那么认真的答复!
按照惯例,需要贴代码,不过我想贴 nodejs 的规则代码,一来在这里没有任何参考意义,二来篇幅太大,所以就没贴了。
思维导图 +excel 的飘过。。。
我们不做 UI 自动化
楼主的 APP UI 自动化的项目 收益如何?
和我们团队开发的一个 mock 平台类似,楼主是打算把 UI 自动化,接口自动化,单测自动化的任务和结果全部收纳到你这个 web 系统里面是嘛?
比较全面的普及,支持一下
赞一个
顶一个!
汗,原来有人跟我做了一样的事。。区别是我们对 PICT 做了二次开发
来顶一个!
作者写的很用心,支持!
支持楼主开源,赞一个!这种元素,动作,组件,业务逻辑等分别封装已经应用很广泛了,异曲同工之妙
—— 来自 TesterHome 官方 安卓客户端
#13 楼 @jiazurongyu 嗯,这一点提醒的很关键,多谢~~
#10 楼 @shijin880921 新应用,还没上线过。。
#7 楼 @roger_yang 是的,芯片架构小米、三星、华为采用的芯片比较具有代表性,所以我没有直接写出来。分辨率的话倒确实没有着重去考虑,不知道 fps 是否受分辨率的影响?