趁公司中午的休息时间,写一些测试的基础
心得:
1/学习方法
关掉抖音,放下手机
专注力
制定小而可实现的目标(把控量很关键)
1000小时理论
劳逸结合
/02/学习目标:
脑子里对软件测试知识有一个概要的介绍从0开始一点点了解学测试,然后入学习测试,最后应用到是工作中,做到学以致用。
①:软件测试的流程大概是(生命周期):
需求分析--》测试计划--》编写测试用例--》用例的评审--》搭建测试环境--》开发编写完接口(可以进行接口测试)--》开发转测试之后-->先进行冒烟测试--》
SIT测试(如功能,性能,稳定性,兼容性等测试)--》发现问题--》提交给开发修改--》修改好之后进行回归测试--》测试都全部ok之后==》UAT测试(验收测试)==》测试报告==》项目上线
按阶段划分 :(有单元,集成,系统,验收等测试)
①:单元测试是最小可测单元,一般都是开发修改的(单元相当于是代码)
- 尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例中重写模拟方法);
- 此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
-
单元测试的好处:
- 尽早的发现缺陷
- 利于重构
- 简化集成
- 文档
- 用于设计
②:什么是集成测试/SIT测试(
在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。
实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。
程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。集成测试主要关注模块与模块之间的接口。
③:什么是系统测试
将集成后的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试
④:什么是验收测试/UAT测试
它是一项确定产品是否能够满足合同或用户所规定需求的测试。
这是管理性和防御性控制 主要确认软件是否按合同要求进行工作,既是否满足软件需求规格说明书中的要求。
按是否查看代码来分(有黑盒,和白盒,灰盒)
1、黑盒测试 把软件看成一个黑盒子,在完全不考虑程序内部逻辑的情况下,检查程序是否满足用户需求。
2、白盒测试 对程序内部结构和算法进行测试。必须先全面熟悉程序内部逻辑结构,然后编写程序,对所有逻辑路径进行测试的一种方法。
3、灰盒测试 关注系统接口所实现的功能,是否和需求一致。
其他划分
①:回归测试
对软件的新版本测试时,重复执行上一个版本测试时使用的测试用例,防止出现“以前应用没有的问题现在出问题了”,这是全量回归;
当在测试过程中,发现某个模块存在缺陷,开发修复后,测试人员重新验证该缺陷是否被修复,以及验证相关联的模块是否受影响,这叫部分回归。
我们在项目中,怎么做回归测试呢?首先,把bug单对应的用例执行一遍,还要检查有数据交互的模块会不会受影响,有没有引入新的问题;
项目上线前,还要把当前版本的重要功能以及冒烟测试的用例都回归一遍,确保重要功能上线后不出问题。
②:冒烟测试(BVT测试)
冒烟测试的对象是每一个新编译需要正式测试的版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试,也叫预测试。
③:敏捷测试(敏捷开发引发)
敏捷开发的最大特点是高度迭代,有周期性,并且能够及时、持续地响应客户的频繁反馈。
敏捷测试即是不断修正质量指标,正确建立测试策略,确认客户的有效需求得以圆满实现和确保整个生产的过程安全的、及时的发布最终产品。
a:敏捷测试的特点:
1、强调从客户的角度,即从使用系统的用户角度来测试系统。
2、重点关注持续迭代地测试新开发的功能,而不再强调传统测试过程中严格的测试阶段。
3、开发一个模块就测试一个模块,不需要等到系统所有模块都开发完成再测试。
———————————————————————————下班了再补充一些———————————————————————————————————————————
④:功能、手工测试与性能测试、自动化测试/
功能与手工测试
检查实际功能是否符合用户需求,手工测试是指,测试人员通过一条一条的执行测试用例,期望结果跟实际结果相比较,判断输出的结果是否满足期望的结果。
性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行的测试。
软件的性能包括很多方面,主要有时间性能和空间性能两种。
时间性能:主要是指软件的一个具体的响应时间。例如一个登录所需要的时间,一个商品交易所需要的时间等。当然,抛开具体的测试环境,来分析一次事务的响应时间是没有任何意义的,它需要在搭建好的一个具体且独立的测试环境下进行。
空间性能:主要指软件运行时所消耗的系统资源,例如硬件资源,CPU、内存、网络带宽消耗等。
自动化测试
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计测试用例并通过评审之后,由测试人员根据测试用例中描述的规则流程一步步执行测试,把得到的实际结果与期望结果进行比较。在此过程中,为了节省人力、时间和硬件资源,提高测试效率,便引入了自动化测试的概念。
自动化测试又可分为:功能自动化测试与性能自动化测试。
功能自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。通过测试工具(或框架)录制/编写测试脚本,对软件的功能进行测试,并验证测试结果是否正确,从而代替部分的手工测试工作,达到节约人力成本和时间成本的目的。
性能自动化测试:通过性能工具来模拟成千上万的虚拟用户向系统发送请求,从而验证系统的处理能力。
⑤:冒烟测试、回归测试、和安全测试
这几种测试出现在软件测试的周期中,既不算具体明确的测试阶段,也不是具体的测试方法。
冒烟测试
是指在对一个新版本进行大规模的系统测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
引入到软件测试中,就是指测试小组在正式测试一个新版本之前,先投入较少的人力和时间验证一个软件的主要功能,如果主要功能都没有运行通过,则打回开发组重新开发。这样做的好处是可以节省时间和人力投入到不可测的项目中
回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错误。
回归测试一般是在进行第二轮软件测试时开始的,验证第一轮软件测试中发现的问题是否得到修复。当然,回归也是一个循环的过程,如果回归的问题通不过,则需要开发人员修改后再次进行回归,直到所有问题回归通过为止
安全测试
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成至发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。
安全测试现在越来越受到企业的关注和重视,因为由于安全性问题造成的后果是不可估量的,尤其是互联网产品,最容易遭受各种安全攻击。
⑥:软件测试原则/
测试应该尽早进行,最好在需求阶段就开始介入,最严重的错误系统不能满足用户需求(所有的测试都应追溯到用户需求)
程序员尽量避免测试自己开发的程序(测试是否可以单独由开发者完成)
越早测试越好,测试过程与开发过程应是相结合的
测试的规模由小而大,从单元测试到系统测试
设计测试用例尽量覆盖率要全面(保证测试的覆盖程度)
发现BUG需要进行确认。
应该充分注意测试中的群集现象。
妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
既应该测试软件该做什么也应该测试软件不该做什么