软件测试
软件测试是系分里面的一个考点。但是这个考点从目前的出题趋势来看,已经越来越少涉及了。不过,由于知识点比较好梳理,那么就首先梳理出来!
1、软件测试的概念
软件测试不等于程序测试,软件测试应贯穿于软件定义与开发的整个周期;软件测试是我们通常讲的一个更广泛主题是确认与验证。
确认是指保证软件的实现满足用户需求的一系列活动。包括有需求规格的确认和程序的确认。而程序的确认又分为静态确认与动态确认,静态确认一般不是在计算机上执行的程序。
验证是保证软件正确实现了某一特定功能的一系列活动。
2、测试各个阶段与软件开发各个阶段的关系
首先根据国GB8566-88《计算机软件开发规范》的规定,软件的开发与维护分为8个阶段:可行性研究及计划、需求分析、概要设计、详细设计、实现(编码)、集成测试、确认测试、
使用维护;其中单元测试是在实现阶段完成。
其中单元测试是对详细设计与实现的测试与验证,集成测试是对概要设计、详细设计的验证,确认测试对需求分析与概要设计的验证。
3、白盒测试的测试用例设计方法
白盒测试又称为结构测试或逻辑驱动测试。需要掌握测试用例设计的方法与原则,以下将详细罗列各个方法,首先将介绍逻辑覆盖的几种方法,然后单独介绍基本路径测试的方法,
其中涵盖有环复杂度的概念。
(1) 语句覆盖:设计若干测试用例,运行所测程序,使得每一可执行语句至少执行一次。(是最弱的逻辑覆盖准则)
(2) 判定覆盖:设计若干测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。(又称分支覆盖)
(3) 条件覆盖:设计若干测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
(4) 判定-条件覆盖:设计若干测试用例,运行所测程序,使得判定中的每个条件可能取值至少执行一次,同时每个判定的所有可能结果至少执行一次。换言之,即是要求各个
判断的所有可能条件取值组合至少执行一次。(可以将多重条件的判定分解,形成基本判断条件,这样即可有效的检查所有条件是否正确了)
(5) 条件组合覆盖:设计若干测试用例,运行所测程序,使得程序中每个判断的所有可能的条件取值组合至少执行一次。。
(6) 路径测试:设计足够的测试用例,覆盖程序中所有可能的路径。
4、白盒测试之基本路径测试
基本路径测试是在程序控制流图基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出测试用例要保证在测试中程序每一个可执行
语句至少执行一次。
实施步骤:
(1) 以设计或代码为基础,画出相应的流程图。
(2) 确定结果流程图的环复杂度。
(3) 确定一个基本的路径集合,根据环复杂度。
(4) 准备测试案例,执行基本路径集合中的每条路径。
环复杂度的方法:
流图中区域的数量就是环复杂度。
V(G)=E-N+2 其中E是流图中的边,N是流图节点。
V(G)=P+1 其中P是流图中的判定节点数。
连接矩阵(图矩阵)法:将流图中的节点横向、纵向组成一个正方形的图形矩阵,其中纵向是节点,横向的连接到的节点。在每一个矩阵框中,用1来表示相互连接的节点。在横向有1的行中,每行1进行累加然后减1.最后将每行的最终结果汇总加1,就是环复杂度了。
5、黑盒测试的测试用例设计方法
黑盒测试的测试用例方法有等价划分法、边界值发、错误推测法和因果图、功能图。其中前3个基本了解其概念方法即可,后两者需要了解其原理和方法,将会以单独的章节来介绍。
(1) 等价类划分:该方法是把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。具体有有效等价类、无效等价类两种情况。
(2) 边界值分析:是对等价类划分方法的补充。在所有黑盒测试中,最有效的方法不是因果图法,而是边界值分析法。
(3) 错误推测法:靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。
6、黑盒测试之因果图
等价类分析、边界值分析都是着重考虑输入条件,未考虑输入条件之间的联系。如果在测试中必须考虑输入条件的各种组合,可能又会产生一些新的情况。这就是应用因果图的原因。
因果图方法最终生成的就是判定表。用它来检查程序输入条件的各种组合情况。而判定表就是横向排列有输入条件、中间结果、最终结果。然后根据最终结果导出测试案例。而纵向是根据输入条件的不同情况。具体应用因果图方法的步骤如下:
(1) 分析软件规格说明描述中,哪些是原因(输入条件或其等价类),哪些是结果(即输出条件),并给每个原因、结果赋予一个标识符。
(2) 分析软件规格说明中的语义,找出原因与结果之间,原因与原因之间的关系,根据这些关系画出因果图。
(3) 由于语法或环境的限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些情况,在因果图上用一些记 标明约束或限制条件。
(4) 把因果图转换成判定表。
(5) 把判定表的每一列拿出来作为依据,设计测试用例。
7、软件测试策略
对于这一个小节,主要对一些概念的描述,需理解。
驱动模块、桩模块、白盒测试的概念是单元测试阶段的内容。
组装测试(集成测试)中主要提及了一次性组装方式和增殖组装方式。对于后者来说,又区分有自顶而下、自下而上的两大类方式;并且在此基础上,又有了一系列的衍生方式。
确认测试(有效性测试)主要是结合软件需求规格说明来对软件功能、性能进行测试。其中有a测试与B测试。
α测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。β测试是由软件的多个用户在实际使用环境下进行的测试。
8、烟幕测试
烟幕测试可以被刻画为一种滚动的集成策略。每天软件都被重新建造(随着新构件的加入)并测试。主要的好处是:集成风险被最小化、终端产品的质量被改善、
错误诊断和修改被简化、进展容易评估。
9、负载测试、压力测试、并行测试
负载压力测试是在一定约束条件下测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力。
压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
10、静态测试、动态测试、回归测试
静态测试就是评审,虽然有效,但是不能够发现所有的错误。动态测试是指上机测试。回归测试指的是,在修改bug之后,不仅仅需要测试修改的的地方,还需要测试其他的地方。
11、系统测试
11.1 确认测试还只是停留在软件层次上,是对软件需求的一种确认。系统测试是对整个系统的测试,包括软件、硬件以及 络环境等。
11.2 系统测试有:恢复测试、安全测试、强度测试、性能测试。
12、调试法—试探、回溯、对分查找、归纳法、演绎法
13、排错策略
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!