在IEEE国际标准中,对软件测试进行了详细的定义:“软件测试是在规定的条件下,使用人工或自动化手段来运行或测试某个系统的过程,其主要目的是对其是否满足设计要求进行评估的过程”通俗地说,软件测试就是寻找系统中缺陷,提高软件质量的过程。在这个定义中详细的描述了三个维度的内容和:软件测试需要在规定条件下、软件测试是一过程、目的是验证系统是否满足客户需求。
软件测试的分类:
1、从被测对象的角度分类,测试可以分为黑盒测试、白盒测试和灰盒测试;
2、从被测对象是否运行的角度进行分类,测试可以分为静态测试和动态测试;
静态测试是指不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。如:代码走读、文档评审、程序分析等都是静态测试。
动态测试是指按照预先设计的数据和步骤去运行被测软件系统,从而对被测软件系统进行检测的一种测试技术,单元测试中常见的动态测试方法就是逻辑覆盖的方法,系统测试阶段我们做的测试都属于动态测试。
3、从测试执行时使用的工具角度分类,测试可以分为手工测试和自动化测试;
手工测试是指软件测试的整个活动过程(评审、测试设计、测试执行等)都是由软件测试工程师手工执行完成,不使用任何的测试工具。
自动化测试是指使用软件来控制测试执行过程,比较实际结果和预期结果是否一致,设置测试前置条件和其他测试控制条件并输出测试报告。
软件测试级别
单元测试(也叫组件测试)----集成测试----系统测试----验收测试;
组件测试:在实际的测试过程中所对应的阶段是我们的单元测试阶段,组件测试是最低层的一个级别的测试。对应分类中的白盒测试
组件测试的具体目的:
1、验证代码是与设计相符合的;
2、发现设计和需求中存在的错误;
3、发现在编码过程中引入的错误;
组件测试需要关注两个维度的内容:功能方面和非功能方面
功能方面主要是内部的逻辑结构,验证程序内部逻辑结构是否满足设计需求,除此之外还包括内部数据结构,独立路径集等方面的内容。
非功能测试主要是其他逻辑设计之外的内容,主要包括代码性能、内存泄漏、代码健壮性、代码可靠性等。
集成测试:也叫组装测试或联合测试。对应分类中的灰盒测试。集成测试是在单元测试的基础上,将所有模块按照设计要求组装成为一个系统或者子系统来进行集成测试。它是单元测试的逻辑扩展,主要测试组件之间接口数据传递是否有问题。集成测试又分为系统内部集成和多个独立系统之间的集成。
集成测试的策略有很多种:主要包括自顶向下集成测试、自底向上集成测试、三明治集成测试、核心集成测试、分层集成测试、基于使用的集成测试。
系统测试:是将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际使用环境下,对计算机系统进行一系列的测试活动。
系统测试对象是软硬件集合在一起的系统,验证时应尽可能模拟实际的运行环境和条件,尽最大可能保证系统上线后不出问题。
系统测试是一个过程,它不是一个简单的步骤,所以为了让系统测试更全面,就需要对系统测试的活动进行管理。
系统测试应该有一个流程,标准的测试流程包括:计划与控制、设计与分析、实现与执行、评估与报告、结束活动。
测试用例设计也就是系统测试方法包括:等价类、边界值、因果图、判定表、正交试验、场景分析法、状态迁移等;
系统测试的类型包括:功能测试、性能测试、兼容性测试、易用性测试、安全性测试。
系统测试的目的:通过与系统需求作比较,找出软件与系统定义不符合或与之矛盾的地方,系统测试的测试用例应根据需求分析说明书来设计,并在实际使用环境下运行。
验收测试:交付测试,是向最终用户展示系统能够像预定要求那样正确的工作,包括:正式验收、非正式验收、α 测试和 β 测试。
系统生命周期中的测试策略:
开发阶段主要采用白盒测试策略
通常的程序结构覆盖测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、路径覆盖、基本路径覆盖。
产品阶段主要采取黑盒测试策略。
常用的黑盒测试设计方法有以下几种:
等价类划分法;
边界值测试法;
错误推测法;
因果图法;
场景法;
判定表法;
正交实验法;