一、软件测试定义:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。
测试对象:软件的概要设计、软件的详细设计、软件需求、软件源代码、可运行程序、软件运行环境
软件测试的五大要素:资源、流程、技术、质量、人员
两个目标:测试覆盖率、测试效率
二、测试所遵循的原则:
1.测试显示缺陷的存在,但不能证明系统不存在缺陷;
2.穷尽测试是不可能的,应设定及时终止的条件;
3.测试应该尽早进行;
4.缺陷具备群集特性;(重点关注bug较多的模块)
5.测试的杀虫剂悖论(测试用例和测试方法应该不定期的评审和修改);
6.测试的二八原则(80%的时间和资源用在20%的重要模块上,来达到效率和资源配置的最佳比例);
7.测试活动依赖于测试背景。
三、测试阶段
按测试阶段来分类:单元测试、集成测试、系统测试、验收测试
单元测试:对软件中的最小可测试单元(人为规定的最小的模块)进行检查和验证。
如:c:函数、java:类、图形化:功能(比如一个菜单,子窗口)
单元测试的原则:
1.尽可能保证各个测试用例是互相独立的
2.一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
优点:
1.能尽早发现缺陷(tdd测试驱动开发—敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。)
2.有利于重构
3.简化集成
4.文档(尽可能减少文档)
5.用于设计(统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言。UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态)
限制:
1.不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误。
2.每一行代码,一般需要3-5行测试代码才能完成单元测试,所有存在投入和产出的一个平衡。
单元测试框架:Xunit、Junit、PHPunit、Nunit、CPPunit
Junit—单元测试框架的使用
集成测试(各模块之间的接口)
定义:在单元测试的基础上,测试在将所有的软件单元按照概要设计规范说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应激素指标及要求的活动。
主要实施方案:
1.Big Bang
2.自顶向下
3.自底向上
4.核心系统集成
5.高频集成(持续集成)
单元测试与集成测试的区别:
1.测试对象不同
2.测试依据不同
3.测试方法不同
系统测试(真实的运行环境)
定义:是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,已发现软件潜在的问题,保证系统的正常运行。
关注点:系统本身的使用
系统与其他相关系统间的连通性
在不同使用压力下的表现
在真实使用环境下的表现
系统测试与集成测试区别:
1.测试对象不同
集成测试:由通过了单元测试的各个模块所集成起来的构件
系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统
2.测试时间:
集成测试介于单元测试和系统测试之间的测试
系统测试在集成测试之后
3.测试内容不同:
集成测试:各个单元模块之间的接口
系统测试:整个系统的功能和性能
4.测试角度不同:
集成测试:偏于技术角度的验证
系统测试:偏于业务角度的验证
验收测试
定义:也称交付测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
细分:
用户验收测试(开发方)
运行验收测试(运维方面)
合同和规范验收测试
Alpha测试(开发者提供的环境下验证)
Beta测试(用户提供的环境下验证)
验收测试驱动开发(在敏捷开发中的应用)