嵌入式软考备考_8 软件测试

软件测试

测试:在规定的条件下操作程序,以发现错误,对软件质量进行评估。

对象:程序,数据,文档。

目的:发现错误,看是否满足用户需求,发现错误产生的原因(不能分析其质量好坏)。

嵌入式硬件一般用专门测试仪器测试,软件除了逻辑正确性外,还看中系统的性能和健壮性,实时性,软硬结合分析。

测试方法

动态:黑盒,白盒,灰盒。

  • 黑盒:测试程序功能,把程序视作一个黑盒子。

  • 白盒:透明白盒,测试代码具体逻辑。

  • 灰盒:两者结合,系统测试常用。

静态:桌前检查,代码审查,代码走查。

  • 桌前检查:开发人员自己审查。
  • 代码审查:开发人员和测试人员人工审查。
  • 代码走查:提供测试用例的检查。

image-20230508100252012

等价类划分:比如程序输入11000,其实210是等价的,测试一个典型的就行。

边界值分析:边界。

错误推测:可能什么地方出错。

因果:对于复杂的程序输入联系,比如约束、组合等关系,用等价类和边界值难以表达的情况。

逻辑覆盖测试要理解每一个覆盖,以及其对应需要多少测试用例。

这里对于各种判断的理解参考这篇文章:动态白盒测试——逻辑覆盖测试法_深秋红枫的博客-CSDN博客

例:

image-20230508101632902

语句覆盖 sc:所有语句(方形的)都被执行过一次,并不是所有情况都被执行过一次。所以两个判断可以是TT FF 或者 TF FT这类,2个测试用例。

判定覆盖/分支覆盖(DC):每个判断里都被执行过一次,还是TT FF 或者TF FT这类就能满足。

条件覆盖:所有逻辑判断(也就是单个的逻辑条件)至少被满足过一次。也就是x>0 x<0 y>0 y<0 magic>0 magic<0都至少有过一次。

image-20230508102253652

条件判定覆盖:条件和判定覆盖都满足。

image-20230508102348676

条件组合覆盖:每个条件语句中所有可能的情况都要出现过,也就是x>0 y>0,x>0 y<0, x<0 y>0, x<0 y<0和magic>0 magic<0的组合都有过,不同条件覆盖里的语句无需组合。

image-20230508102629590

路径覆盖:只要流程图中所有可能的情况都出现过。也就是两个if为TT,TF,FT,FF的情况。但是从图中可以看出,如果x y>0,magic=x+y+10也一定>0,因此x>0 y>0 magic<0也就是TF这种情况不可能出现。所以只有三种情况。

修正条件判定覆盖:

  1. 所有可能的输出结果都出现。
  2. 改变众多条件中的一个条件,就能影响判定的结果。

例题:程序

{
    
    
    if(A&&(B||C))
        return true;
}

首先条件组合覆盖所有可能:ABC是000,001,010,011,100,110,111.

image-20230508105501331

语句覆盖:只要为true就能全部执行。1条用例即可。

覆盖所有可能,只需要0结果的一个,1结果的一个就行。但是另一个要求是:测试用例中存在只改变一个输入的用例,而且改变这一个用例可以使得结果改变。

000怎么改变也不会改变结果。

001改成101就可以了,26可以拿出来。

以此类推。

改变A改变结果:26,37,48.

改变B改变结果:57.

改变C改变结果:56.

因此最少需要囊括的是:5,6,7,3.

测试阶段,测试级别

image-20230508145055208

单元测试:代码测试,比如白盒测试法。

集成测试:模块组合测试。增量式组组装就是先测一部分,再逐渐集成新的模块,可以从顶层或者底层开始。如白盒测试。

  • 驱动模块:开发出来用于驱动测试的。
  • 桩模块:临时开发出来提供给被测模块调用的。

确认测试:

  • 验收测试:用户对项目验收测试,看是否符合软件需求规格说明书 srs。
  • alpha 测试:开发环境下测试,通过了才能到beta。
  • beta 测试:用户实际使用环境测试。通过后才能发布。

系统测试:系统放到实际环境中,测试性能。如灰盒测试。

调试

交叉调试必不可少。调试器和北条氏程序在不同机器上,有某种通信方式建立联系,目标机上通常有协助调试器运行的代理。

调试可以控制程序运行,并修改内存、寄存器、变量等信息。

image-20230508150420410

直接测试:宿主机-目标机

调试监控器法:宿主机上的调试器通过JTAG等下载到目标机的监控器上。

ROM仿真器法:插在目标机上,仿真一个只读的ROM,连接宿主机。

在线仿真器法:仿真CPU。

片上调试法:通过JTAG接口可以取得单片机上的一些寄存器值。现在一般都支持调试和运行两个模式。

模拟器法:都在开发平台上,完完全全模拟硬件。

调试和测试的区别:测试是找出错误,调试是定位错误并修改程序,以达到预期的结果,在测试之后。

软件评审

image-20230508184055638

验证与确认

image-20230508184215659

注重过程和结果。

猜你喜欢

转载自blog.csdn.net/jtwqwq/article/details/130565916