常用的测试方法和测试工具-1

温柔似野鬼°
938次浏览
2021年02月21日 09:01
最佳经验
本文由作者推荐

-

2021年2月21日发(作者:读书破万卷下笔如有神是什么意思)


常用的测试方法



一、黑盒测试



1.



黑盒测试其实是一种功能测试, 主要在软件的接口处进行。主要测试的



以下几类错误:




·是否有不正确或遗漏的功能




·在给出的接口处正确的输入是否有正确的输出




·是否有数据结构错误或外部信息访问错误




·性能上是否满足要求




·是否有初始化或终止性错误



2.



黑盒测试用例



·等价类划分



等价类即输入域的子集合


,


测试用例设计时应设计出对应的 有效等价类和



无效等价类



·边界值




边界值法是对等价类划分方法的补充,主要是测试发生在输入和输出域边



界上的错误


.


等价类划分和边界值着重考虑输入条件


,


但测试时还应考虑输入条


件之间的关 系,各种条件的组合情况,即因果图



·因果图




根据输入条件间的关系生成判定表,根据判定表的每一列来设计测试用例



·功能图




包括状态迁移图和逻辑模型



二、白盒测试



1

.白盒测试是对软件过程性细节做细致的检查。主要对软件程序模块做以


下检



查:



·对模块的所有路径至少执行一次



· 对模块的所有逻辑判断,取“真”和“假”两种情况各执行一次



·在循环边界和运行界限内执行循环体



·测试内部数据结构的有效性



2


.白盒测试用例



1)


逻辑覆盖




·语句覆盖




·分支覆盖




对程序模块中的每个取真分支和取假分支执行一遍




·条件覆盖




对程序模块中的每个判断的每个条件执行一遍




由于以上的测试用例都有较大的缺陷,所以一般不会使用< /p>


,


采用条件组合



覆盖更为合理有效





·条件组合覆盖


(

< br>逻辑覆盖的主要方法


)



2)


基本路径测试用例





测试步骤:






①根据详细设计或源代码导出程序控制流图





②计算程序环路复杂性


,


即独立路径的数目


(


一条新的路径必须包含



一条新边


)


③生成测试用例


(


辅助工具:图形矩阵


)



测试策略



一、单元测试



1.



单元测试时主要对模块的以下< /p>


5


个方面进行检查:



·模块接口



·局部数据结构



·边界条件



·独立路径



·出错处理



二、集成测试



1.



集成测试时主要要考察程序的以下几个方面


:


·各个模块连接时


,


穿越模块接口的数据是否会丢失< /p>



·一个模块是否会对另一个模块的功能产生不利的影响



·各个子功能组合起来


,


能否达到预期的父功 能



·全局数据结构是否有问题



·单个模块的误差累积起来


,


是否会被放大


,


从而达到不可接受的程度



2.



集成测试的组织和实施中考虑的因素


:



·选用何种系统集成方法来进行集成测试




·各个模块连接的顺序




·模块代码编制和测试进度是否集成测试的顺序是否一致




·测试过程中是否需要有专门的硬件



3.



集成测试完成的标志




·成功执行了测试计划中规定的所有组装测试




·修正了所发现的错误




·测试结果通过了专门小组的评审



三、确认测试



1.



确认测试流程


:


·进行有效性测试< /p>


,


即在模拟的环境下(可能是开发环境)


,运用黑盒测试


的方法,


验证所没软件是否满足需求说明书列出 的需求。


对于测试结果与预期结


果不相符进,要提交一份问题报 告。




·软件配置复查



< br>软件配置复查的目的是保证软件配置的所有成份都齐全,各方面的质量


都符合要求 。




·a测试和

ß


测试



< br>a测试是一个用户在开发环境下进行的测试,


也可以是开发机构内部的

< p>
用户在模拟实际操作环境下进行的测试。


ß


测试是 由软件的多个用户在一个或多


个用户的实际使用环境下进行的测试




·验收测试




验收测试时软件开发人员和


QA


人员也应参加,由用户参加设计测试用


例,使用用户界面输入测 试数据,并分析测试结果。




四、系统测试



即通过确认测试的软作为整个系统中的一个元素而进行的测试。




嵌入式系统测试方法及工具




通常嵌入式系统对可靠性的要求比较高。

嵌入式系统安全性的失效可能会导


致灾难性的后果,


即使是 非安全性系统,


由于大批量生产也会导致严重的经济损


失。这就 要求对嵌入式系统,包括嵌入式软件进行严格的测试、确认和验证。




一般来说,软件测试有


7

< p>
个基本阶段,即单元或模块测试、集成测试、外部


功能测试、回归测试、系 统测试、验收测试、安装测试。嵌入式软件测试在


4


个阶段上进 行,即模块测试、集成测试、系统测试、硬件


/


软件集成测试。 前


3


个阶段适用于任何软件的测试,


硬 件


/


软件集成测试阶段是嵌入式软件所特有的,


目的是验证嵌入式软件与其所控制的硬件设备能否正确地交互。



1.



白盒测试与黑盒测试





由于严格的安全性和可靠性的要求,


嵌入式软件测试同非嵌入式软件测试相


比,


通常要求有更高的代 码覆盖率。


对于嵌入式软件,


白盒测试一般不必在目标


硬件上进行,


更为实际的方式是在开发环境中通过硬件仿真进行,


所以选取的测


试工具应该支持在宿主环境中的测试。

< br>




因为黑盒测试与需求紧密 相关,需求规格说明的质量会直接影响测试的结


果,


黑盒测试只 能限制在需求的范围内进行。


在进行嵌入式软件黑盒测试时,



把系统的预期用途作为重要依据,根据需求中对


负载、定时、性 能


的要求,判断


软件是否满足这些需求规范。

< br>为了保证正确地测试,


还须要检验软硬件之间的接


口。< /p>


嵌入式软件黑盒测试的一个重要方面是极限测试。


在使用环境中,


通常要求


嵌入式软件的失效过程要平稳,


所以,


黑盒测试不仅要检查软件工作过程,


也要


检查软件换效过程。




2


、目标环境测试和宿主环境测试





在嵌入式软件测试中,

< p>
常常要在基于目标的测试和基于宿主的测试之间作出


折衷。


基于目标的测试消耗较多的经费和时间,


而基于宿主的测试代价较小,



毕竟是在模拟环境中进行的。目前的趋势是把更多的测试转移到宿主环 境中进


行,但是,目标环境的复杂性和独特性不可能完全模拟。





在两个环境中可以出现不同的软件 缺陷,


重要的是目标环境和宿主环境的测


试内容有所选择。


在宿主环境中,


可以进行逻辑或界面的测试、


以及与硬件无关


的测试。


在模拟或宿主环境中的测试消耗时间 通常相对较少,


用调试工具可以更


快地完成调试和测试任务。< /p>


而与定时问题有关的白盒测试、


中断测试、


硬件接口


测试只能在目标环境中进行。在软件测试周期中,基于目标的测试是在较晚的


“硬件


/


软件集成测试”阶段开始的,


如果不更早地在模拟环境中进行白盒测试,


而是等到“硬件


/


软件集成测试”阶段进行全部的白盒测试,将耗费更多的财力


和人力。




2.



常用的嵌入式软件测试工具



1)


内存分析工具


< br>在嵌入式系统中,内存约束通常是有限的。内存分析工具用来处理在动态内


存分配 中存在的缺陷。


当动态内存被错误地分配后,


通常难以再现,< /p>


可能导致的


失效难以追踪,


使用内存分析 工具可以避免这类缺陷进入功能测试阶段。


目前有


两类内存分析 工具——软件和硬件的。


基于软件的内存分析工具可能会对代码的


性能造成很大影响,


从而严重影响实时操作;


基于硬件的内存 分析工具价格昂贵,


而且只能在工具所限定的运行环境中使用。





2)


性能分析工具





在嵌入式系统中,


程序的性能通常是非常重要的。


经常会有这样的要求,



特定时间内处理一个中断,


或生成具有特定定时要求的一帧。


开发人面临的问题


是决定应该对哪一部分代码进行优化来改进性 能,


常常会花大量的时间去优化那


些对性能没有任何影响的代码 。


性能分析工具会提供有关的数据,


说明执行时间


是如何消耗的,是什么时候消耗的,以及每个例程所用的时间。根据这些数据,


确定哪些例程消耗部分执行时间,


从而可以决定如何优化软件,


获得更好的时间


性能。


对于大多数应用来说,


大部分执行时间用在相对少量的代码上,


费时的代


码估 计占所有软件总量的


5%-20%



性 能分析工具不仅能指出哪些例程花费时间,


而且与调试工具联合使用可以引导开发人员查 看需要优化的特定函数,


性能分析


工具还可以引导开发人员发现 在系统调用中存在的错误以及程序结构上的缺陷。



3)GUI


测试工具





很多嵌入式应用带有某种形式的图 形用户界面进行交互,


有些系统性能测试


足根掘用户输入响应时 间进行的。


GUI


测试工具可以作为脚本工具有开发环境中


运行测试用例,


其功能包括对操作的记录和回放、

< br>抓取屏幕显示供以后分析和比


较、设置和管理测试过程。很多嵌入式设备没有


GUI


,但常常可以对嵌入式设备


进行插装 来运行


GUI


测试脚本,


虽然这种方式 可能要求对被测代码进行更改,



是节省了功能测试和回归测试 的时间。



4)


覆盖分析工具





在进行白盒测试时,


可以使用代码覆盖分析工具追踪哪些代码被执行过。



析过程可以通过插装来完成,


插装可以是在测试环境中嵌入硬件,

也可以是在可


执行代码中加入软件,


也可以是二者相结合。


测试人员对结果数据加以总结,



定哪 些代码被执行过,


哪些代码被巡漏了。


覆盖分析工具一般会提供 有关功能覆


盖、分支覆盖、条件覆盖的信息。对于嵌入式软件来说,代码覆盖分析工具可 能


侵入代码的执行,


影响实时代码的运行过程。


基于硬件的代码覆盖分析工具的侵


入程度要小一些,但是价格一般比较昂贵,而 且限制被测代码的数量。






嵌入式测试的十大秘诀



在嵌入式软件 开发过程中,一般来说,花在测试和花在编码的时间比为


3:1(



际上可能更多


)


。这个比例随着你 的编程和测试水平的提高而不断下降,但不论


怎样,


软件测试< /p>


对一般人来讲很重要。


很多年前,


一位开 发人员为了对嵌入式有


更深层次的理解,


Oracle


询问了这样的一个问题


:

我怎么才能知道并懂得我的


系统到底在干些什么呢


?


Oracle


面对这个问题有些吃惊,


因为 在当时没有人这


么问过,


而同时代的嵌入式开发人员问的最多的 大都围绕


“我怎么才能使程序跑


的更快”、

“什么编译器最好”等肤浅的问题。所以,面对这个不同寻常却异乎


成熟的问题,< /p>


Oracle


感到欣喜并认真回复了他


:


你的问题很有深度很成熟,因为


只有不断地去深入理解才有可能 不断地提高水平。并且


Oracle


为了鼓励这位执

< p>
着的程序员,把10条关于嵌入式软件开发测试的秘诀告诉了他


:


1.


懂得使用工具



2.


尽早发现内存问题



3.


深入理解代码优化



4.


不要让自己大海捞针



5.


重现并隔离问题



6.


以退为进



7.


确定测试的完整性



8.


提高代码质量意味着节省时间



9.


发现它,分析它,解决它



10.


利用初学者的思维





这十条秘诀在业界广为流传,使很 多人受益。本文围绕这十条秘诀展开论述。






.


懂得使 用工具








通常嵌入式系统对可靠性的要求比 较高。


嵌入式系统安全性的失效可能会导


致灾难性的后果,


即使是非安全性系统,


由于大批量生产也会导致严重的经济损


失。这就要求对嵌入式系统,包括嵌入式软件进行严格的测试、确认和验证。随


着越来越多的领域使用软件和微处理器控制各种嵌入式设备,


对门益复杂的嵌入


式软件进行快速有效的测试愈加显得重要。





就象修车需要工具一样,


好的程序员应该能够熟练运用各种软件工具。


不同


的工具,有不同的使用范围,有不同的功能。使用这些工具,你可以看到你的系


统在干 些什么,


它又占用什么资源,


它到底和哪些外界的东西打交道。


让你郁闷


好几天的问题可能通过某个工具就能轻松搞定,


可惜你就是不知道。


那么为什么


那么多的人总 是在折腾个半死之后才想到要用


测试工具


呢?原因很多,


主要有两


个。


一个是害怕,

< br>另一个是惰性。


害怕是因为加入测试用具或测试模块到代码需

要技巧同时有可能引入新的错误,


所以他们总喜欢寄希望于通过不断地修改重编


译代码来消除


bug,


结果却无济于事。< /p>


懒惰是因为他们习惯了使用


printf


之类的


简单测试手段。下面来介绍一些嵌入式常用的


测试工具< /p>




.


源码级调试器


[Source- level Debugger]


-


-


-


-


-


-


-


-