你了解那些测试方法?
你了解那些测试方法?
题眼:重点是你用过的测试方法和工具。过程既是结果,过程大于结果。
常见的测试有很多种,在不同阶段有不同的测试方法。最常见的有以下几种:
单元测试。针对软件中最小的可测试部分进行检查和验证,通常由开发人员编写,用于测试函数、方法或类。(go test 就是典型的单元测试。)
集成测试。测试多个单元或组件如何一起工作,确保不同模块之间的接口能够正确交互。(比如测试controller,能否正常调用Model)
系统测试。对完整的、集成的软件系统进行测试,包括所有软件功能以验证系统符合需求规格。(相当于,对某个API进行全程测试)
性能测试。评估软件应用的速度、响应时间、稳定性和资源消耗。(比如,在某个特定环境下,接口的耗时情况)
压力测试。测试软件在极端条件下的表现,如高负载或资源限制。(非常重要,需要知道当前服务的极限)
回归测试。测试加了新功能,或者改了某个BUG是否对之前的服务造成影响。(也很重要)
黑盒测试。测试者不了解内部结构和内部操作,只关注输入和输出。
白盒测试。测试者了解内部结构和内部操作,可以测试内部逻辑。
AB测试。 对不同的用户群体展示不同的软件版本,以评估哪个版本更有效。(C端产品必备)
其他不常见的测试方式:
验收测试、安全性测试、自动化测试、冒烟测试、持续集成测试等等。
(作为开发,必须要掌握的是单元、集成和系统这三个测试方法。其实很多时候你都在用,但是不知道名字。当你成为某个服务的OWENR以后,那你就必须要对自己的服务能力边界有一定的了解,这个时候就需要性能测试和压力测试了。回归测试,一般在上线前会由测试同事来做。黑盒和白盒则更多的是面试的分类,知道名字即可。AB测试,往往需要公司有专门的染色平台专门搭建AB测试的工具)
参考答案:
我们之前学过软件工程,里面讲到过很多测试方法,有些测试方法其实很早就在用了,只是不知道名字。然后,我熟悉的测试有黑盒测试,白盒测试,压力测试,单元测试等等这些。黑盒和白盒测试这些我觉得更多偏向概念,比如说我自己在写代码的过程中经常会写test进行测试,如果是API的话,会使用postman或者apifox模拟请求,这种业务逻辑都是透明的,都应该是白盒测试。除了单元测试,集成测试以外,我还做过简单的压力测试,用jmeter或者apache的ab命令,或者gowrk框架一次模拟100个进程发送1000个请求这样的,看下接口的响应情况,然后看下服务器的CPU负载和内存使用情况,如果后面挂的有数据库,那么还能顺便看下库表或者SQL有没有问题。除此之外还了解过自动化测试,验收测试,安全测试等等,但在工作中我接触的比较少。
(如果你有过工作经验,那你可以这样补充)
像自动化测试还有回归,安全等测试,都是我们这边自测没有问题以后,把代码提交合并,然后自动化流程里会先进行简单的自动化测试,看看代码风格呀,常用接口的可用性之类进行简单测试,然后发布到测试环境,这个时候我们的测试同事会进行一下验收,然后再回归测试下,看看会不会出现“解决了一个BUG,有引入新的BUG”的情况,如果都没问题的话,那就可以发布了。等到发布上线后,我们的测试和产品,当然我肯定也要去线上点点看看,有没有什么BUG,确保万无一失。
像压测这种情况,一般是有大型活动的时候,leader会让我们对用到的接口进行排查,按照页面等级划分。比如说首页的接口就是P0级别的,然后给我们一个标准,去压测平台上申请机器,对接口进行压测。这个工作,我也就参与过一次,没有真实上手压测过。但是整个流程我都看了,我们组长手把手给我演示了一遍。你比如说,压测目标是1WQPS,那肯定不能上去就拉满,毕竟不能影响到线上服务。所以我们压测一般是在凌晨,流量比较低的时候,然后第一次压测先拉到三分之一,如果没问题再慢慢压到一半,最后在拉满。中间还要记录各项指标还有告警日志等等这些,最后还要写一份压测报告给领导们看。然后,如果资源没被压满,我们组长还建议继续压一把,看看当服务的CPU负载到90%以上后,最多能抗多少请求,加深对自己服务的理解,便于后续的扩容。
引申:可以了解下自动化测试和灰度测试,AB测试。都是非常棒的工程化思想。
