软件测试的定义:用人工或者自动化手段来测试,目的找到预期结果和实际结果的差异。
软件测试的目的:用最少的人力、物力、财力、找到软件中的缺陷并修复,从而降低商业风险
测试原则:
1、只能证明软件存在的问题,不能证明不存在的问题。(意思为你只能去证明程序是有问题,不能去证明程序是没有问题的)
2、不能去进行穷举测试,应分类别、有方法地测试
3、测试工作应尽早介入、降低修复成本(甚至在最基础的文档就开始介入,发现文档内的表述或不合理的地方)
4 、缺陷存在集群现象,二八原则:通常一个程序中20%的模块占了总程序80%的缺陷
5、测试依赖环境(系统、浏览器等测试过程中所需要依赖的)
6、杀虫剂现象:每个人都有自己的测试思路,当同一个模块测不到问题的时候,换一个测试人员,可能会找到新的问题。
7、不存在没有缺陷的这种言论
1、按阶段分类:
单元测试:单个按钮或操作小模块进行的测试
集成测试:又叫组装测试,在单元测试的基础上,把多个单元进行有序的、递增地组合测试。
系统测试:将整个系统看为一个整体进行测试,测试依据是软件需求的说明书。
验收测试:检验软件是否符合用户需求
α测试:内测版本,通常用于开发者内部交流,或者忠实用户,一半bug较多,用于收集测试员没留意到的bug。尽量不要给普通用户安装。
β测试:公测版本,所有用户都能使用,在经过α测试后再bug最低的情况下,经过广大用户的测试反馈,再进行修改bug。(通常公测版本为免费版)
Y测试:Gamma版本,就是正式版的候选版本,基本与正式版无异。
2、测试类型分类:
黑盒测试:不考虑程序内部机构和内部特性,只考虑软件功能需求,和考虑软件输入和输出的展现情况。
白盒测试:指研究源代码和程序的结构
灰盒测试:介于白和黑之间的测试,不仅关注输入和输出的情况,还要关注程序源代码和程序的结构。
3、按是否运行来分类
静态测试:指不运行程序,只是静态地检查程序代码、界面、或者文档中可能存在的问题。
动态测试:指实际运行程序,输入相应的测试数据,观察输出和展现的内容是否和设想的一致。
4、是否自动化测试:
人工测试:也叫手工测试,由测试人员手动去进行测试
自动化测试:利用代码或者工具帮组人手去测试。
5、测试策略:
冒烟测试:对程序基本功能的测试,保证基本功能能跑通
回归测试:当修复一个BUG之后,把之前提出的bug再次测试,确保bug已被修复。
随机测试:对被测试的软件中一些重要的功能进行复测,也包括没有覆盖的部分。
探索性测试:探索一些之前其他项目出错的部分,同时不断学习新系统的使用
6、软件缺陷
指软件和程序中存在的各种问题及错误,最常见的缺陷除了软件bug,还有就是软件不能满足用户需求。(即软件能正常运行,但客户觉得并不是他想要,或者某些功能和用户设想的不一样)
7、软件缺陷的判定标准
1、软件未达到需求规格说明文档的要求。
2、软件出现了需求说明书指明不会出现的错误地方
3、软件功能超出规格说明书文档指明的范围
4、软件未达到需求规格说明书未指明但应该达到的目标
5、软件测试人员认为软件难以使用、运行速度慢,或者最终用户体验不好。
8、软件缺陷产生的原因(软件缺陷产生是不可避免的,关键在于缺陷多与少)
1、需求解析、记录或者定义就已经错了
2、设计文档说明存在错误或者拼写错误
3、编码说明、或代码错误(bug)
4、硬件或软件系统上存在错误
9、软件缺陷的类型
1、功能错误:使用功能出现错误
2、界面错误:ui或者排版及展示给用户的界面出现错误
3、兼容性缺陷:浏览器、操作系统等不兼容的缺陷
4、易用性问题:软件达到功能需求,但不方便用户使用
5、改进建议:影响使用,但改进会让客户或使用的用户更高兴
10、测试用例的作用:在程序员给代码之前就应该写好,内容为将要测试的页面、步骤、传什么数据、预期达到什么效果。当程序员给到代码后,我们就可以根据写好的测试用例一步一步测试,来找出预期和实际的差异。
11、测试用例基本要素:用例编号、用例标题、测试项目、用例级别、预置条件、测试输入、执行步骤、预期结果。