互联网测试有什么不同

时间:2022-10-23 21:24:54

1.最大的不同就是互联网的产品很多都是自己来部署和运营,用户只要用一个瘦客户端就能使用。

这里的瘦客户是一个浏览器、一个APP或者一个需要安装的client,但核心的数据和业务逻辑主要在互联网公司的机房里,在IDC,在云端。

在和以前的B/S、 C/S架构的企业系统的主要区别是为多大范围的人来运营和运维这样的系统。

缩小到测试范围,就需要考虑现网的问题。比如有下面的这些方面:

a. 如何监控现网的可用性。

这需要跟运营人员一起做。但运营针对的是比较通用的部分,例如机器的资源使用情况、宽带和流量的情况。

而偏产品业务层面的,例如功能是否可用,则需要测试人员来设计和自动测试工具来监控。

b.如何发布到现网

测试完后直接发布,周期短。常使用灰度机制,让一部分人先使用起来。发布完后还要做现网的验证。

c.如何来保证测试环境和现网是同步的


2.互联网的产品节奏很快

不像传统的客户端或服务器的软件产品,周期可能是半年,或者一年,甚至更长,有足够的时间来做项目计划、需求评审,然后是概要/详细设计,进而有测试设计文档,写大量的测试用例,然后有不同的测试cycle,也有足够的时间来部署测试环境和自动化测试。

就目前而言,互联网产品这样做是不太现实的。产品需求经常变动,用例是临时开出来的,根本来不及自动化,也没有很多时间来做测试设计,经常是测试个一两天就上线。


3.有更多的人参与到测试里面来

a.开发自测

开发进行单元测试

b.产品体验

开发出相应的模块后,由产品体验开发出来的功能是否是他们想要的。这样就可以在测试人员测试之前保证没有明显的需求理解问题,避免浪费测试的人力和时间。


4.有一些是免测试的

并不是所有发布到现网的东西都需要测试,有些东西是不用测试的。这个没有一定的标准,取决于具体发布的情况,以及产品和团队的成熟度等因素。


5.海量的用户带来的挑战

其实有很多,这里列举几个

a、如何来保证或者验证性能

传统软件的性能测试相对要单纯一些,可以比较容易搭建一套环境,流量也比较容易模拟。而互联网的一个产品可能有几百上千台甚至更多的服务器,多地多层部署,受到各种因素的影响,比如广告促销活动,一下子流量可以冲到很高。所以这方面的做法也会有所不同,全量的模拟不太现实,而且如上面所说,发布非常快,也没有那么多的时间去反复的做性能测试。所以如何来做比较轻量级的性能测试也是一个很大的课题。

b、浏览器的兼容性。

  用户使用的浏览器种类可能非常多,包括大家都在骂的IE6,还有IE9的n种模式,版本更新速度火箭一般的Chrome和Firefox,以及很多种国产的浏览器。要一一覆盖是一个很大的挑战,其实不可能,但是产品团队肯定希望测试能够覆盖更多。对于一些企业级的产品可以宣称就支持很少的几种,但是互联网产品很难这样做,那就等于放弃一些用户。如何来设计策略?有没有技术手段?

c、一个小的改动引起的问题可以影响到无数的用户,而且很多时候马上会被发现,那个压力还是非常大的。整个修复的过程也是带电操作,没有那么多环境和时间来在内部慢慢调整,如何来保证修复的质量?


6、问题的修复

  互联网的产品相比传统的产品的一个优势或者说是特性就是问题的修复比较快,因为很快就可以影响到用户,而不需要等用户一个个去打hotfix或者patch,甚至安装新版本。有很多时候,这种问题的发生到修复的时间很短,真是绝大部分用户都没有感知。有时候这个也会成为quick & dirty的一个借口,不过一般都会把现网的问题列为一个考核的指标。而且有些问题不是小问题,会构成事故。其实对于这样的产品,测试人员对于漏测的压力就更大了。

7、测试工具和技术选择上的差别

  大概是因为互联网自身产品的一些特点,各大公司都在大量的使用开源的,以及内部开发的平台和系统。相应的,测试方面用到的平台和工具主要也是这两种,要么是开源的工具(也可能做一些改造),要么是内部自己开发的工具。相比而言,传统软件行业更会去购买一些商业的测试工具,比如用于性能测试、覆盖率或者代码检查的工具,还有就是测试用例和缺陷的管理平台。 目前我了解到的情况,国内几大互联网公司都是改造和自研的比较多,所以在简历里面列一堆大的工具的使用经验不一定有多大优势。而对于新人来说需要花不少时间来学习和熟悉这些平台。


以上列举了一些相比传统软件行业的不同的地方吧,但是对测试人员来说,也有很多相同或者类似的地方。

  1、一样的需要非常了解产品和业务

  对于测试人员来说,如果不了解产品和业务,测试工作很难开展,因为连最基本的对错(是不是bug)都很难判断,当然除了一些明显的错误,比如js出错这样的信息,这种缺陷产品体验的时候就能够发现或者等到被用户发现了。所以我们还是需要花很多的时间和精力来熟悉产品业务。从这个角度看,没有很大的变化,只是换了一个不同的领域而已,这个差别是不同的产品带来的,而不是因为传统软件或者互联网的差别带来的。

  2、一样的需要了解产品的技术

  这个其实和上面有点类似,测试人员需要去了解产品开发用到的技术,这对深度的测试,甚至和很多测试技术和工具的应用有很大的关于,比如性能分析,内存泄露的发现,覆盖率的分析等等。不去学习和了解这些,很多工作没有办法开展。从方向上来看没有变化,我们也要去学习和实践这些东西才能更好的了解。但是具体的技术可能有所不同,比如互联网web的产品可能会常用到JS,PHP, Java, C++等语言,还有各种web服务器,cache,代理等等。

  3、具体的测试技术

  上面说到了一些产品开发的技术,其实还有一块是测试方面的技术,其实这一块细化来看和传统的软件开发有很多相似甚至相同的地方。比如如果来做静态代码的扫描、局部的性能测试方法和工具、覆盖率的工具、自动化的一些工具和框架、一些监控的工具等等。

  从这个角度来看,技术的差异并没有很大,当然互联网有一些特别,比如很多基于web的系统、分布式的、多层的,会对工具提出一些要求,这个差别其实倒不是很大,因为很多传统的服务器软件也是这样。

  4、测试设计的方法

  上面提到,因为产品发布节奏的差异,使得整个流程必须更轻更快,但是针对于一个具体功能的测试的时候,用例的设计和执行上需要考虑的问题其实和传统的没有太大的差别。因为这个时候大家面临的问题是一样的,如何测这个软件的这个功能。所以一些思路和方法还是能用得上。

  综合以上来看,局部的差异反而比较小,但是涉及到大的形态和流程方面的差异就会比较大。