测试定义:使用人工或自动的手段来运行或测定某个软件系统的过程
测试目的:检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
常见测试方法:
1. A/B测试
为了同一个目标,将两种方案或两个不同版本的APP投放到市场上,让两组相似的用户去体验,根据测试的数据化结果,看哪种方案更好,一切根据数据说话。
AB实验的分桶原理:把全量数据分为n份,让每份之间都比较随机
AB实验的分层原理:基于同一份样本同一个时间段内,是否可以做多个实验。对于互斥实验,可以在同一个时间段内同一份流量中做多个实验,如果实验间有互相影响,则不能。
AB实验的指标选取:做AB实验需要把用户行为进行数据化,我们则需要选取 我们要测试的目标。
AB实验的指标叠加:上面讲都是对单一指标进行试验,比如针对活跃时长进行测试,但有时候我们想对多个指标进行测试,我们可以选取【活跃时长/启动数】这样一个整体的指标来进行试验。
AB实验常见的分桶算法:
- 根据手机尾号、身份证尾号进行分桶
- 根据APP的的设备号如IDFA、IMEI进行哈希求模。(哈希算法要选好)
AB实验的统计学原理:
- 均值
- 方差
- 正态分布
- 置信区间((u-3σ ,u+3σ )这样可称为一个置信区间,95% 称为置信度。)
2. 黑盒测试(功能测试)
是对产品的功能和流程进行测试,判断产品的功能和流程是否按照原先设定进行。盒子指的是被测试的软件,这时的软件对于测试人员来说是不透明的,在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。功能流程包括正常流程和异常流程,通过测试来检测每个功能是否都能正常使用。
黑盒测试主要有三种方法:边界值分析、等价类划分、错误推测法;
优点 :
- 从用户的角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题
- 基于需求功能做测试,能快速了解哪些功能已实现,哪些实现的有问题;
- 测试比较简单,不需要了解程序的内部的代码及实现,与软件的内部实现无关;
缺点 :
- 不可能覆盖所有的代码, 覆盖率较低,大概只能达到总代码量的30%
- 自动化测试的复用性较低。
- 目前测试做的大部分工作属于黑盒测试。掌握黑盒测试是做测试工作的基本功。
3. 白盒测试(结构测试、透明盒测试、逻辑驱动测试或基于代码的测试)
白盒测试是全面了解程序内部逻辑结构、对所有逻辑路径进行测试。测试人员清楚软件内部的结构和逻辑,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。白盒测试一般需要技术基础支持,同时需要相关工具配合,比如日志抓取工具。抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
优点 :
- 帮助软件测试人员增大检测代码的覆盖率;
- 提供代码的质量评估报告;
- 发现代码中隐藏的问题;
缺点 :
- 测试范围有限:程序运行会有很多不同的路径,不可能测试所有的运行路径
- 不利于功能的检测:测试基于代码,只能测试开发人员做的对不对,而不能知道设计是否正确,可能会漏掉一些功能需求
- 耗时耗力:系统庞大时,测试开销会非常大。
4. 单元测试
单元测试又称模块测试,是针对软件设计的最小单位程序模块,进行正确性检验的测试工作。也就是我们所说的技术自测,因为一个产品的开发工作通常都是有多个技术配合完成的,而每个技术负责几个单元或者模块,每个单元或者模块开发完成后,先进行自测通过,再提交联调,通过这样的方案再将整个产品串联起来
5. 集成测试
集成测试也称联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作,其主要目的是检查软件单位之间的接口是否正确。
集成测试的对象是已经经过单元测试的模块。也就是我们所说的技术之间的联调,技术开发好的各个模块需要接口连通,而集成测试就是进行连通测试,只有在技术之间先将功能测试通过后才能提交给专门的测试团队进行最终的测试把关
6. 界面测试
界面测试,就是对产品的每一个页面的UI进行排查,将程序员开发出来的内测版本与设计师设计出来的设计图进行比对,如元素对齐(包括元素本身、元素之间)、字体图片大小、组件的间距等。界面测试需要保证程序的开发完成的界面和产品当初设计的页面是一样的,并且可以加载出对应的数据。
7. 兼容性测试
兼容性测试主要测试软件是否能在不同的操作系统平台上兼容,是否能在不同的设备上兼容,软件本身能否向前或向后兼容,软件能否与其他相关的软件兼容,数据是否兼容,主要是指数据能否共享等。如网易云笔记,是否能在MAC&WINDOWS&安卓&ios,是否支持笔记内容再不同版本间的兼容,是否可以收录其他软件的内容等。比如Axure8.0设计的原型,7.0是打不开的。
8. 性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。性能测试包含了负载测试和压力测试,通常是两种测试结合进行。
负载测试是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况,如直播带宽为10M,理论上同时开10个房间,那房间逐渐增加时,系统会反应如何?如系统缓慢,响应时长加长。还有房间的最大同时在线人数,预计的1万人,那人数逐渐增加时,房间的负载性能如何。
压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。如双11活动0点的下单支付,QPS是多少,超过后系统就奔溃了,这样的画面想必大家在双十一购物时有所体验。
系统的上线一般都会经历性能测试,该测试需要技术人员配合执行。
9. 系统测试
系统测试是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。它将测试的软件作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统之间的不符合或与之矛盾的地方。
10. 回归测试
回归测试是技术在根据测试人员反馈的问题修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误,一般也就是最后一波测试,测试完成后就可以输出测试报告了。
回归测试有时候也会表达功能再正式上线后在线上的的测试,已保证功能上线后是可用的,并且没有其他问题。
11. 内测和公测
内测是指只有内部小范围的人员参与的测试。比如在公司内部员工参与的测试,游戏产品的内测申请。网络游戏或软件内测通常是在游戏或软件开发完成的初期,由游戏公司或软件公司发送限定数量的激活码或账号给玩家,由玩家测试并向游戏公司反馈使用情况和存在的问题,以促进游戏的进一步完善。
内测的形式可以分为封闭性内测和开放性内测。封闭性内测即只邀请少数用户参与,如公司内部人员或极少数忠实用户。开放性内测即只要玩家注册登入就可以使用,是没有限制的,类似于全民性参与,但在功能使用上会存在不确定因素,当然也是为了让全民帮助找到产品所存在问题,以便快速修复;
公测是邀请一些全国各地的用户参加测试,主要是侧重于客户端可能出现的问题,测试服务器的性能和查找正式线上的程序是否存在Bug。参与测试的人选比内测要广泛,与开放行内测类似,可以通过如地区、会员级别、抽取部分用户、设备等进行公测;
内测和公测只是开放测试的范围不同,没有严格的界限。
(文章引用来源:简书-产品经理如何把控产品测试环节-作者:点滴产品; 知乎-产品经理需要懂的AB测试-作者:编码前线)