你能够推敲不到体系架构上的异常

乙醇 创建于 6 个月 之前

最后更新时间 2019-04-18

很多同窗常常在上线以后认为惴惴不安,心里很没底

关于测试同窗来讲,设计及履行异常场景的用例是平常平凡任务中异常重要的一部分,由于只存眷正常流程的话,那么很多情况下隐蔽的缺点其实不克不及被完全的发明。

很多同窗常常在上线以后认为惴惴不安,心里很没底,哪怕上线之前测试的再充分,都邑有如许的感到。这是由于我们很难预感到线上体系会出现哪些我们所没有覆盖到的异常场景。

异常场景大年夜致可以分为下面这几类吧

营业上的异常流程

比如正常的营业流程是用户先操作步调1再操作步调2,然则用户恰恰先做步调2再做步调1。由于测试同窗在履行测试时,常常是对被测产品有必定的熟悉的。既然对被测有所懂得,乃至大年夜部分情况是异常懂得,如许一来就会对被测产品的设计是有必定的认同感的,就会先入为主的认为用户必定会先做步调1再做步调2,如许就会忘记验证异常的场景,形成缺点遗留到线上,产生了不太好的后果。

所以一些有经历的测试同窗会站在用户的角度上去设计测试用例。由于用户的行动永久是光怪陆离的,所以有时辰我们确切要设计一些逻辑上看上去不太公道的用例,设计这些用例时常常还会伴随着 “靠,居然有这类操作”的赞赏,这类赞赏用例常常是很有价值的,能发明法式榜样设计或许是产品设计上的马脚。

永久不要信赖用户的输入,永久不要认为用户的操作是理性公道有章可循的。抱着困惑的立场去测试常常能产生意想不到的后果。

操作上的异常

这类异常能够会比较隐蔽。比如在电商体系生成订单的时辰,用户持续点击了n次提交按钮,招致产生了n个订单,这明显是我们不想看到的成果。由于用户行动的随机性,有一些操作我们真的是很难想象到,我们只能尽可能借助于monkey等方法停止一些浑沌测试,毕竟猴子比用户加倍的弗成控。

架构上异常

很多测试同窗不懂架构却要为架构背锅,这大年夜概是不公道的吧。

在测试同窗的才能模型里,营业才能的加点应当是最高的,技巧才能和架构才能的技能点常常是少加乃至是不加的。假设你不须要为架构背锅,那么不懂得架构应当没甚么大年夜成绩,但假设线上成绩的锅根本上就是你的锅,那么懂一点架构最少可以防身辟邪,若干是有效武之地的。

架构的异常场景是我们在设计用例的时辰很难想象到的。由于你没办法想象一个在你的认知里根本不存在器械毕竟是甚么模样,这比叶公好龙和瞽者摸象加倍的虚无缥缈。假设你的认识里体系架构都不存在的话,那么你怎样知道架构在甚么情况下会出现异常呢?

举个简单的缓存的例子,在我们的体系架构中,缓存长短常罕见的中心件,一些须要频繁操作数据库去读写的数据我们可以放在缓存里以加快拜访和存取速度。不过缓存生成有一些异常场景。

比如我们把一些数据放到缓存里,然则用户在拜访体系的时辰这部分数据能够用到的很少,大年夜部分的用户请求能够照样直接读取数据库,形成数据库压力过大年夜,体系全体性能很差乃至崩溃。这就是缓存射中率低的场景,这类场景我们比较难设计营业用例去覆盖,只能对其停止专项测试和优化。

别的体系在刚上线的时辰缓存能够是空的,这就招致用户的请求全部击穿了缓存直接到了数据库,形成数据库崩溃,体系弗成用。这就是缓存没有预热,或许是体系冷启动的成绩,这类成绩应当是知识,是不须要测试就可以想到的,但条件是我们要对体系架构有一些懂得才可以。

还有就是假设体系频繁对某个详细key值的缓存做读写,那么该key地点的缓存实例能够就会过载,形玉成部缓存集群性能降低,这就是热点key的成绩,也应当是不消测试就可以想到并提早防备的。

不过缓存的过不时间和更新战略跟我们的营业相干性照样比较大年夜的,是可以在设计的阶段就想好,然后在测试阶段去验证的。

从下面可以看出,假设你不知道体系架构里有缓存如许一个器械,那么万一哪天缓存出了成绩形成了线上成绩,那这个某名奥妙的锅很能够对你产生巨大年夜的降维攻击。引导一句你为甚么没有测出来,你很能够连辩护的来由都解释不清楚。

综上,异常场景常常是我们测试的重点,营业异常和操作异常是大年夜家可以想象到的,不过架构上的异常大年夜家常常难以名状,出了成绩却又有磨难言。所以多学一些架构知识应当是有好处的,有些成绩其实可以提早防备和躲避,不须要在上线以后惶惶弗成整天的。不过这只是作者的一家之言了,由于程度无限,所以还请大年夜家多多示正。

我要留言

  • 您好,看了这篇文章受益很多,请求作者在出一篇文章简介一下缓存射中率的专项测试的思路和测试点,缓存过不时间更新战略的测试思路和测试点,和典范bug举例

    金苹果415 创建于 2019-07-31 18:41:03

  • 启发思想

    cola 创建于 2019-05-14 17:13:35

  • 受益很多。。

    lemonk 创建于 2019-05-14 17:00:57