软件测试小白学习笔记 三

    技术2023-05-28  18

    白盒测试

    白盒:测试软件产品的内部结构和处理过程,不测功能。

    静态测试

    **概念:**不运行程序进行测试,只检查和审阅,包括代码检查、静态结构分析、代码质量度量等。

    代码检查:包括代码走查、代码审查等,主要检查代码和设计的一致性、代码对标准的遵循、可读性、代码的逻辑表达的正确性和代码结构的合理性等方面,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。 a:代码走查:(1)在走查会议上各开发人员自己讲解自己的逻辑写法,让别人提意见,主要关注核心代码;(2)编码的风格与规范。 b:代码审查。 项目走查审查准备资料通读设计和编码应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表形式非正式会议正式会议参加人员开发人员为主项目组成人员,包括测试人员主要技术方法无缺陷检查表注意事项限时,不要现场改代码限时,不要现场改代码生成文档会议记录静态分析错误报告目标代码标准规范,无逻辑错误代码标准规范,无逻辑错误

    代码审查清单: 只对结构化编程测试具有意义,不包括特殊应用领域和面向对象的软件测试。审查清单包括的内容如下:

    数据引用错误:变量未初始化、数组和字符串下标越界、对数组的下标操作遗漏[0]、变量与赋值类型不一致、引用的指针未分配内存。数据声明错误:计算错误比较错误控制流程错误子程序参数错误输出错误

    语句和判定覆盖

    Dim a,b As Integer Dim c As Double If(a>0 And b>0) then c=c/a End if If(a>1 or c>1) Then c=c+1 End if c=b+c

    该程序模块有四条不同路径: P1(1-2-4)  P2(1-2-5) P3(1-3-4)  P4(1-3-5)

    语句覆盖:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。 可执行语句:O、P、Q(一次走完) 优点:直观从源代码得到测试用例 缺点:仅针对程序中显式存在的语句,对隐藏条件和可能达到的逻辑分支无法测试。判定覆盖:使每个判断的取真分支和取假分支至少经历一次,即判断真假值均被满足。 -真:O、P、Q   假:M、N 优点:具有与语句覆盖一样的简单性,测试覆盖更广。

    条件和判定条件覆盖

    条件覆盖:每个判断中每个条件的可能取值至少满足一次。 对于M:     a>0取真时为T1,取假时为F1;     b>0取真时为T2,取假时为F2; 对于N: a>1取真时为T3,取假时为F3; b>1取真时为T4,取假时为F4。 测试用例取值条件具体取值条件覆盖路径输入:a=2,b=1,c=-2输出:a=2,b=-1,c=-3T1,F2,T3,F4a>0,b<=0,a>1,c<=1P3(1-3-4)输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6F1,T2,F3,T4a<=0,b>0,a<=1,c>1P3(1-3-4)

    优点:比判定覆盖增加了对符合判定情况的测试,增加了测试路径。 缺点:需要足够多的测试用例,并不能保证判定覆盖。

    判定条件覆盖:使判断条件中的所有条件可能至少执行一次取值,同时,所有判断的可能结果至少执行一次。 测试用例取值条件具体取值条件覆盖路径输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4a>0,b>0,a>1,c>1P1(1-2-4)输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4a<=0,b<=0,a<=1,c<=1P4(1-3-5)

    优点:弥补了条件和判定覆盖的不足。 缺点:没有考虑到条件的组合情况。

    条件组合和路径覆盖

    条件组合覆盖: 使判断中每个条件的所有可能至少出现一次,每个判断本身的判定结果也至少出现一次。

    编号覆盖条件取值判定条件取值判定-条件组合1T1,T2Ma>0,b>02T1,F2/Ma>0,b<=03F1,T2/Ma<=0,b>04F1,F2/Ma<=0,b<=05T3,T4Na>1,c>16T3,F4Na>1,c<=17F3,T4Na<=1,c>18F3,F4/Na<=1,c<=1

    设计测试用例:

    测试用例覆盖条件覆盖路径覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-3T1,F2,T3,F4P3(1-3-4)2,6输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6F1,T2,F3,T4P3(1-3-4)3,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4P4(1-3-5)4,8

    路径覆盖: 设计所有可能测试用例,覆盖所有可能执行路径。

    测试用例覆盖条件覆盖路径覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5输入:a=1,b=1,c=-3输出:a=1,b=-1,c=-2T1,T2,F3,F4P2(1-2-5)1,8输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6F1,F2,F3,T4P2(1-3-4)4,7输入:a=-1,b=2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4P4(1-3-5)4,8

    单元测试

    特性: 验证行为;设计行为;编写文档行为;具有回归性。 单元测试内容: 模块的出错处理、模块接口、局部数据结构、独立路径、边界条件。   局部数据结构: 不正确或不一致的数据类型说明,使用尚未赋值或初始化的变量;错误的初始值或默认值;变量名拼写错误或书写错误;不一致的数据类型;   路径测试: 对基本路径和循环进行测试;有错误的计算、不正确的比较、不正确的控制流。      常规的不正确的计算:运算的优先次序不正确;运算方式错误;算法错误;运算精度不够;表达式的表达符号不正确。      常见的比较和控制流错误:不同数据类型比较,不正确的逻辑运算符或优先次序;因浮点精度问题造成的两值比较不等;关系表达式中不正确的变量和比较符;“差1错”不正确的多循环或少循环一次;错误或不可能的循环终止条件。   出错处理测试: 完善的模块设计要求能预见出错条件,设置适当的出错处理对策。表明出错处理模块有错误或缺陷的情况:   出错的描述难以理解;出错的描述不足以对错误定位和确定出错原因;显示的错误与实际的错误不符;对错误条件的处理不正确;对错误进行处理之前,错误条件已经引起系统干预;若出错情况不予考虑,检查恢复后模块可否正确工作。   边界测试: 在n次循环的第0次、第1次、第n次是否有错;运算或判断中取最大最小值时是否有错;数据流、控制流中刚好等于、大于、小于确定的比较值时是否有错。

    单元测试环境: 在编码阶段,编码完成,经过评审和验证确认没有语法错误之后。如果模块不是独立的程序,需要辅助测试模块。 驱动模块(Driver): 所测模块的主程序,接收测试数据,把测试数据传给所测试模块。 桩模块(Stub): 用来代替所测模块调用的子模块。 被测模块、驱动模块和桩模块共同构成单元测试环境。

    单元测试工具:Junit 单元测试Junit入门实例

    单元测试的基本方法:

    人工静态分析:人工阅读代码,检查错误。自动静态分析:使用工具扫描代码,根据预先设定的错误特征,发现并报告可能存在的错误,只能发现语法特征错误。自动动态测试:使用工具自动生成测试用例并执行被测程序,通过捕捉某些行为特征(如产生异常/程序崩溃等)发现并报告错误,只能发现行为特征错误,对无特征错误无能为力。人工动态测试:人工设定程序的输入和预期的输出,执行程序并判断是否符合预期,仅测试用例的输入和输出由人工完成,其他由工具完成。人工动态测试又有多种设计测试用例的方法,如黑盒测试和白盒测试。

    测试过程中各种人员的作用:

    系统分析设计人员:进行需求跟踪,进行单元可测性分析。软件开发人员:负责编码和单元测试过程,完成单元测试计划、方案和报告。配置管理人员:参与单元测试计划、方案和报告的评审,对测试计划、设计和质量进行监控。质量保证(QA)人员:参与编码及单元测试评审,对过程进行审计。
    Processed: 0.012, SQL: 8