目录
一、按照测试对象分类
1.1、可靠性测试
1.2、容错性测试
1.3、安装卸载测试
1.4、内存泄漏测试
1.5、弱网测试
二、按照是否查看代码分类
2.1、黑盒测试(系统测试)
2.2、白盒测试(单元测试)
2.3、灰盒测试(集成测试)
2.4、面试题:为什么不能让灰盒测试取代黑盒白盒测试?
2.5、面试题:黑盒测试和白盒测试哪个用的多?
三、按照开发阶段划分(只需清楚概念)
3.1、单元测试
3.2、集成测试
3.3、系统测试
3.4、验收测试
3.5、冒烟测试
3.6、回归测试
一、按照测试对象分类
1.1、可靠性测试
可靠性测试是指系统正常运行的能力或者程度,一般通过可靠性的一个时间占比进行表示,计算方法如下:
可靠性 = 正常运行时间 / (正常运行时间 + 非正常运行时间) * 100%;
例如:检验一个人上班的专注程度(可靠性),假设上班时间总共为4个小,并且这个人其中有一个小时在打游戏
那么通过 总时间 - 打游戏时间 便可以知道他的正常正常运行时间为3个小时;根据公式:可靠性 = 正常运行时间 / (正常运行时间 + 非正常运行时间) * 100% = 3 / (3 + 1) * 100% = 75%;
最后, 不同的应用系统,可用性要求不一样;非实时性的信息系统或一般网站要求都很低,99%和99.5%就可以了,但是军事系统,要求则很高;
1.2、容错性测试
容错性测试是指系统能够处理异常,用户的错误操作产生了异常不至于是系统崩溃的一个抗压性测试;
容错性测试包含以下方面:
1.输入异常数据或进行异常操作,检验系统的保护性,若系统容错性好,则可以将异常在系统内部消化掉,不会产生崩溃;(比如校验测试、环境容错性测试、界面容错性测试);
2.灾难恢复性测试,通过各种手段强制软件发生故障,然后验证已保存的用户数据是否丢失,是否能尽快恢复;
容错性和可靠性的区别:
假设,有一架飞机,飞机有三个引擎,其中一个引擎坏了(不可靠性的表现),但是飞机依然可以正常飞行(容错性的表现);
1.3、安装卸载测试
安装和卸载都是APP的基本功能,一旦出错,就属于优先级最要紧的Critical的缺陷。(工作中很容易遗漏这一项测试,我们因该要引起注意)
主要需要考虑以下方面:
- 软件是否有不同的安装卸载方式;
- 是否可以在不同环境系统下安装(兼容性测试);
- 安装或卸载过程中是否可以手动暂停或取消;
- 安装空间不足是否有提示;
- 是否可以正常卸载;
- 安装或卸载中出现如,死机、断电、断网问题是否可以正常应对;
1.4、内存泄漏测试
内存泄漏简单来说就是指,用过的内存,忘记释放就会累积起来,最后可能耗尽内存,使软件越来越慢,最后停止响应;
造成内存泄漏的原因常见的有以下几种:
- 分配完内存忘记回收;
- 写程序时,写出死循环造成无法回收;
- 某些API函数使用不正确;
内存泄露检测方法:
- 人工静态法:就是我们依照经验用肉眼去检查;
- 自动工具法:借助测试内存泄漏工具,如:Visual Leak Detector,记录每次内存分配,告诉用户内存是怎么泄漏的;
1.5、弱网测试
简单来讲,就是我们在地铁,电梯,车库,这些网络状况不好的情况下(弱网环境),去关注软件的运行状态,检查出现丢包、延时软件的处理机制,避免数据流失;
例如:我们用手机一直刷不到内容,就可能会出现anr弹窗,如果网络不好,就可能会造成客户端频繁去向服务器发送请求;
怎么实施弱网测试?
借助工具模拟弱网环境:Fiddler~
1.打开弱网设置选项
2.打开设置弱网的脚本
3. 设置速率
二、按照是否查看代码分类
2.1、黑盒测试(系统测试)
纯功能测试,不关注程序内部具体实现;
优点:
- 不需要了解程序代码具体实现;
- 从用户角度出发设计测试用例,容易知道用户会用到哪些功能,遇到哪些问题,锻炼测试人员的思维;
- 不容易遗漏软件需求文档中需要测试的功能;
缺点:
不可能覆盖到所有代码;
黑盒测试用到的方法:
等价类、边界值、因果图、场景法、错误猜测法等;
2.2、白盒测试(单元测试)
针对程序的内部实现进行的测试;
目的:
通过检查软件内部逻辑,对然间逻辑路径进行覆盖测试;在程序不同地方设置检查点,检查程序状态,以确定实际运行状态与预期是否符合一直;
主要测试方法:
语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖;
2.3、灰盒测试(集成测试)
介于黑盒白盒测试之间的一种测试,不仅关注输入、输出的正确性,同时也关注程序内部的情况;
2.4、面试题:为什么不能让灰盒测试取代黑盒白盒测试?
灰盒测试没有白盒测试那么详尽,灰盒测试也没有黑盒测试覆盖产品的广度大,所以灰盒测试不能取代黑百盒测试;
2.5、面试题:黑盒测试和白盒测试哪个用的多?
这道题还有一种问法(回答方法都一样):常见的测试方法有哪些?那种测试方法用的最多?
黑盒测试和白盒测试,测试人员都会使用到,在工作中根据实际情况来结合白盒测试和黑盒测试。通常来说测试人员使用黑盒测试相对要多一点;
PS:回答上面这句话后再给面试官说说自己掌握了哪些黑盒设计测试用例的方法(等价类,边界值,正交法,场景法,错误猜测法等等),以及这些方法的适用场景。
三、按照开发阶段划分(只需清楚概念)
3.1、单元测试
单元测试就是对软件的“最小单元”进行测试。目的是为了检验基本组成单位的正确性,测试的对象是软件设计的最小单位:模块(模块测试)。如:白盒测试。
3.2、集成测试
集成测试就是将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确;如:灰盒测试。
3.3、系统测试
系统测试将软件测试看成一个系统的测试,不关注内部实现细节。包括对功能、性能以及软件所运行的软硬件环境进行测试。如:黑盒测试。
3.4、验收测试
验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。
3.5、冒烟测试
开发人员完成开发任务之后,交给测试人员进行测试的第一步,评估软件/系统是否具备可测试的条件;
3.6、回归测试
对历史版本、历史共能进行测试,保证功能是符合要求的,借助自动化来进行回归测试;