目录[-]

软件测试理论

软件的含义

程序、数据及相关文档的完整集合。

什么是软件质量

概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。
具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。
软件质量包括正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。

软件测试的含义

简单讲,软件测试是发现缺陷的过程;IEEE中的定义是,软件测试是使用人工或自动手段来运行或测定某个系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

软件测试的目的

(1)验证软件是否满足各类文档说明书等规定的软件质量要求

(2)找出软件缺陷

(3)为软件产品的质量测量和评价提供依据

(4)帮助开发改进开发流程

什么是功能、性能、兼容性

功能代表一个软件能做什么;性能反映软件运行的速度或效率、占用资源的多少等指标;兼容性表示一个软件与其所在运行环境的依赖程度,包括与硬件、操作平台、其他软件的依赖。

测试分为哪几个阶段以及目的

测试分为单元测试、集成测试、系统测试、验收测试四个阶段。前三个阶段的目的是尽可能多的发现缺陷,而验收测试是要验证软件满足了用户需求,帮助用户建立系统可以正常使用的信心,发现缺陷不是此阶段的目标。

什么是软件开发周期

从软件最初构思到公开发行的过程。瀑布模型的过程是计划、需求、设计、编码、测试、运行、维护循环。瀑布模型有严格的开发步骤,每个阶段是按顺序进行的,每个阶段都必须编写完整的文档,每个阶段完成后必须经过审查才能进入下一步。瀑布模型不能迭代、不能反复;测试在编码之后,测试太晚;测试的只是程序。

软件测试主要有哪些模型

软件测试模型:V模型、W模型、H模型、X模型、前置测试模型、敏捷测试模型

V模型的过程:用户需求→需求分析→概要设计→详细设计→编码→单元测试→集成测试→系统测试→验收测试。
优点:(1)V的左端表示传统的瀑布开发模型,V的右端明确地将测试分为不同的级别或阶段,测试过程更为具体;
(2)测试各个阶段和开发的各个阶段相对应;
(3)V模型的测试策略包括低层测试和高层测试,低层测试是为了源代码的正确性,高层测试是为了整个系统满足用户的需求。
缺点:(1)测试的对象就是程序本身。忽视了测试活动对需求分析,系统设计等活动的验证和确认的功能,直到后期的验收测试才被发现。
(2)测试是开发之后的一个阶段。实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。

W模型的过程:
左边V是需求分析→概要设计→详细设计→编码实现→模块集成→系统构建→系统安装;
右边V是需求测试→概要设计测试→详细设计测试→单元测试→集成测试→系统测试→验收测试。
优点:(1)W模型体现了尽早和不断测试的原则,既强调测试方案设计,也强调测试执行。
(2)左侧V是开发,右侧V是与开发并行的测试,相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动,W明确表示出了测试与开发的并行关系。测试与开发是同步进行的,有利于尽早地全面的发现问题。
(3)测试伴随整个软件开发周期,且测试的对象不仅仅是程序,需求、设计等同样要测试。
缺点:在W模型中,需求、设计、编码等活动被视为串行的,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型,不利于当前软件开发复杂多变的情况。

H模型:

H模型将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。H模型的测试流程是只要测试准备工作完成,达到测试就绪点,测试就可以执行了。
优点:(1)软件测试不仅仅指测试的执行,还包括很多其他的活动。
(2)软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。
(3)H模型反映出软件测试要尽早准备,尽早执行。
(4)软件测试可以进行迭代、反复进行。

敏捷开发的核心思想是:以人为本,适应变化。具体讲:
(1)认为个体和交互重于过程和工具,强调通过过程和工具理解个人和交流的作用;
(2)认为可用软件重于完备文档,强调通过全面的文档理解运行的软件;
(3)认为客户协作重于合同谈判,强调通过合同和谈判得到客户的协作;
(4)认为响应变化重于遵循计划,强调在计划的执行中做出对变更的响应。
特点:(1)敏捷开发提倡迭代式和增量式的开发模式,并强调测试在其中的重要作用。
(2)敏捷开发是以用户为中心、以客户需求为导向的开发过程,在此过程中随时做好“迎接变化”的准备,客户是敏捷的关键环节。
(3)敏捷开发没有单一固定的开发方法或过程,敏捷开发有三个共同点:依赖客户的参与、测试驱动以及紧凑的迭代开发周期。

敏捷测试:

(1)敏捷测试是协同测试的一种形式,程序员结对编程,程序员分饰测试员角色,敏捷测试是连续测试。
(2)敏捷测试侧重单元测试和验收测试。单元测试的过程是先设计单元测试用例,然后进行编码,之后执行测试。
(3)敏捷测试强调客户参与,单元测试通过之后代码集成到代码库中,再由客户进行验收测试,验收测试的结论反馈给开发人员,缺陷得以迅速修复。