0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鉴源实验室·ISO 26262中测试用例的得出方法-边界值分析

上海控安 来源:上海控安 作者:上海控安 2024-07-30 16:01 次阅读

作者 | 李伟 上海控安安全测评部总监

来源 |鉴源实验室

上篇文章我们介绍了等价类的分析和生产方法(ISO 26262中测试用例的得出方法-等价类的生成和分析),并在代码测试中对等价类进行了举例,本篇我们将对边界值分析和代码测试中边界值的测试用例设计进行介绍。

01

开始之前

等价类生成方法很大程度上避免重复测试提高了测试效率,在一类输入数据中取少量的该类数据,来代表整个类的所有数据进行测试。边界值则是因为人们在长时间的测试经验总结后发现,缺陷通常会在输入输出的边界上因处理上的疏忽而出现,所以针对数据在边界上的处理做测试逐渐成了一个必要的测试设计方法。

边界值法可以单独使用,通常情况下为了更全面地对输入数据的场景进行测试覆盖,特别是异常情况下的测试设计,边界值分析法会和等价类分析法配合使用。配合使用时先对输入情况进行等价类分析,然后在划分好的每个等价类中使用边界值分析,对类中的测试取值做选取。

02

边界值分析

2.1 边界条件的选择

我们依然以上一篇中代码的逻辑来展示边界值的选取设计,示例中逻辑如下:根据获得的传感器温度,在车内温度超过25摄氏度时打开空调,此时风扇启动吹冷风,空调压缩机启动,风扇中档风,返回“空调制冷启动”;在车内温度低于15摄氏度时打开空调,此时风扇启动吹热风,空调压缩机不启动,风扇中档风,返回“空调加热启动”;在温度大于等于15摄氏度,且小于等于25摄氏度时不做响应。

我们根据输入条件温度分为3个等价类,有效等价类集合是(25,+∞)、(-∞,15),无效等价类为[15,25]。边界值设计有效的边界值对应选取为26、14,无效等价类边界值设计为15、25。

在一些项目中,或者公司测试质量规范中会根据实际情况对边界值测试设计选取做要求,除了上述的基本设计选取,在每个边界上的取值数量和步进有要求,如次例中通常会额外要求选取边界值、次边界值、中间值、次中间值,连续取值的步进为整数1。按照这个要求测试用例设计选值为(-∞,15)选取-30、13、14,(25,+∞)选取26、27、40,无效等价类边界值设计为15、16、19、20、21、24、25。

上面举例中我们发现边界的取值没有什么特殊的地方,容易造成出问题的点可能在边界15和25取值时的处理,要看这两个值是否需要启动空调。我们重新举一个例子来给大家说明为什么边界值的地方容易出错。我们知道在Python语言中队列的分片时,第一个元素的下标是从0开始的,而-1表示倒数第一个元素,且分片时不包含右边界,如下队列:

queue_test = [‘a’, ’b’, ’c’, ’d’, ’e’, ’f’];

队列中第一个元素应该是queue_test[0] = [‘a’];

下标1表示的却是队列中的第2个元素即queue_test[1] = [‘b’];

直接表示倒数第一个元素时为queue_test[-1] = [‘f’];

而表示第1个至第3个元素时,右边界不是到2而是3,即queue_test[0:3] = [‘a’, ’b’, ’c’]。

通过这个例子我们就可以发现,在对类似的情况进行测试时,下标使用的选取测试我们需要对边界值进行严格测试,因为开发人员稍不注意就可能因为队列下标的使用失误,而造成队列中元素的操作出现缺陷。

2.2 隐藏的边界条件

上面示例中的等价类划分明确边界值比较明显,通常在功能的需求规格说明书中也会有明确的范围定义,然而还有一些边界值在一般的设计文档或者产品说明中不会明确表述出,但是软件测试时依然很有必要进行检查,这样的边界条件称为次边界条件或者内部边界条件。

如温度空调示例中,我们选取极限测试温度值用来做测试时,依据了通常情况下的常用温度值,即-30和40。当然也可以根据温度传感器的上下限进行取值,即温度传感器肯定有最低和最高设备探测温度极限值,也可以用来作为测试设计依据。

同样代码测试中对于变量取值的范围,我们可以从变量对应的实际数据含义设计范围取值,如温度,高度等,不能明确获知这些隐藏范围时,可以从定义数据类型取极限值,如无符号的int,有符号int等等。

2.3 边界值设计原则

使用边界值分析来设计测试用例时,需要遵循一些基本原则,我们引用全国计算机技术与软件专业技术资格软件评测师教程描述大体如下:

对边界值设计测试用例,应遵循以下几条原则:

如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。

如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。

根据规格说明的每个输出条件,使用前面的原则①。

根据规格说明的每个输出条件,应用前面的原则②。

如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。

如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。

选取边界值时每个边界上选取的值个数和选取的步进等信息要看实际项目要求。

分析规格说明,找出其他可能的边界条件。

03

单元测试中的使用

边界值在代码测试中相对比较简单,根据形成对应的设计内容取边界值即可。

我们继续使用前一篇中的温度空调控制示例代码,如下:

代码定义了vehicle_temperature_inside 为车内的温度,实际中该值通常是调用温度传感器读值,本示例中简单将温度传感器接口读值写成了全局变量Sensor_temperature ;AC_switch 空调压缩机开关,0为关,1为开;Fan_swtch 风扇开关,0为关,1为开;Fan_speed 1为微风档,2为中风档,3为高风档;Fan_temp 风扇冷热0为冷风,1为热风。

代码要实现的逻辑是根据获得的传感器温度,在车内温度超过25摄氏度时打开空调,此时风扇启动吹冷风,空调压缩机启动,风扇中档风,返回“空调制冷启动”;在车内温度低于15摄氏度时打开空调,此时风扇启动吹热风,空调压缩机不启动,风扇中档风,返回“空调加热启动”。

wKgaomaonYOADWYFAAEHUAGDqBs479.png

分析代码得知有效等价类集合是(25,+∞)、(-∞,15),无效等价类为[15,25]。我们根据前文基本边界值设计vehicle_temperature_inside 参数输入值有效的边界值对应选取为26、14,测试用例如下:

wKgZomaonYmASInDAAH1AyFbb8k741.png

vehicle_temperature_inside边界值设计无效等价类边界值设计为15、25,测试用例如下:

wKgZomaonZGAU_CrAAH9SNLeLt0997.png

测试完成后检查控制流图如下,所有路径均已设计测试用例覆盖。

wKgZomaonZiAXMKUAAB57Y4fu3Y439.png

04

测试小结

在执行代码的测试设计中使用边界值分析方法有如下建议:

1. 白盒代码测试中参数边界值的取值可以其对应的设计数据内容要求中的实际取值范围,如设计温度、高度、速度等,无设计约束时可以参考常用取值的范围。

2. 使用等价类和边界值分析是代码测试和黑盒测试设计的基本要求。

3. 边界值分析法相对比较简单,边界值取值个数和中间值取值等根据实际情况需要取舍。

参考文献:

1. 全国计算机技术与软件专业技术资格考试指定用书 – 软件评测师教程.

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    4913

    浏览量

    125915
  • ISO
    ISO
    +关注

    关注

    0

    文章

    246

    浏览量

    39451
  • 代码
    +关注

    关注

    30

    文章

    4665

    浏览量

    67742
收藏 人收藏

    评论

    相关推荐

    实验室·基于MQTT协议的模糊测试研究

    作者 |  张渊策 上海控安可信软件创新研究院工控网络安全组 来源 |  实验室 社群 |  添加微信号“ TICPShanghai ”加入“上海控安51fusa安全社区” 随着物联网技术的快速
    的头像 发表于 07-30 15:21 485次阅读
    <b class='flag-5'>鉴</b><b class='flag-5'>源</b><b class='flag-5'>实验室</b>·基于MQTT协议的模糊<b class='flag-5'>测试</b>研究

    实验室管理系列】实验室管理体系ISO/IEC17025内容拆解

    ISO/IEC 17025《检测和校准实验室能力的通用要求》是由国际标准化组织ISO/CASCO(国际标准化组织/合格评定委员会)制定的实验室管理标准,是
    发表于 08-12 10:28

    实验室如何进行非标方法的确认

    方法发生变更时或颁布新标准时,如何对方法进行确认?非标方法如何进行方法确认?检测方法选择的核心是什么?..... 《
    发表于 11-14 14:39

    ISO 26262功能安全标准体系解读

    试验来确认是否产生了满足要求的成果物。对于ASIL D等级要求,无论是软件单元测试还是软件集成测试,都必须进行基于需求的测试、接口测试、故障注入测试
    发表于 07-22 18:10

    锂电材料截面制样-氩离子抛光CP离子研磨 金实验室分享(下)

    锂电池正极片氩离子抛光(CP离子研磨)制样后效果图(正极片氩离子抛光制样后效果图-如上图所示-金实验室罗工提供)锂电池负极片氩离子抛光(CP离子研磨)制样后效果图(负极片氩离子抛光制样后效果图-如上图所示-金
    发表于 12-16 15:47

    lims实验室管理系统是什么?实验室信息管理系统介绍!

    采用实验室信息管理系统或LIMS可能是提高实验室生产力的最有效方法之一。此页面的目的是帮助目前未使用LIMS的科学家和实验室人员分析采用LI
    发表于 11-03 11:17

    实验室lims系统解决方案

    ?lims实验室信息管理系统是一种软件产品,旨在帮助实验室跟踪其设备、样品和测试结果,管理其工作流程/协议,创建合规报告并分析结果。虽然医院、诊所和研究
    发表于 11-04 11:18

    基于UML图依权限有序的Web链接测试用生成方法

    方法生成含信息元素的扩展状态图,通过对扩展状态图的转换及相应路径的时序重排得到最终具有权限与时序性质的Web链接测试用。通过实验分析,与缺
    发表于 01-07 12:25 0次下载
    基于UML图依权限有序的Web链接<b class='flag-5'>测试用</b><b class='flag-5'>例</b>生成<b class='flag-5'>方法</b>

    数据测试:输入数据的设计方法测试用设计方法

    测试用的设计是测试设计的重要内容,关于测试用的设计方法,当前不少出版的
    的头像 发表于 06-29 10:22 2824次阅读

    矽典微实验室通过ISO 17025实验室质量体系权威认证

    2021年9月,矽典微实验室通过了SGS通标公司的基于ISO 17025标准要求的实验室质量体系审核并获得权威认证报告。
    发表于 11-23 16:55 968次阅读

    广东金实验室科技有限公司介绍

    认定的“LED失效分析公共服务示范平台”,广州市中级人民法院司法鉴定专业委托机构。   金实验室建设了一条从芯片到封装灯具的LED测试分析
    发表于 11-25 17:19 1721次阅读
    广东金<b class='flag-5'>鉴</b><b class='flag-5'>实验室</b>科技有限公司介绍

    高精度电流在电子实验室的应用

    高精度电流是一种能够提供恒定、稳定电流输出的设备,被广泛应用于电子实验室。电子实验室是电子工程师进行实验
    的头像 发表于 06-12 09:13 499次阅读
    高精度电流<b class='flag-5'>源</b>在电子<b class='flag-5'>实验室</b><b class='flag-5'>中</b>的应用

    实验室协助鸿利智汇产品顺利通过AEC-Q102认证

    实验室
    的头像 发表于 08-18 09:43 825次阅读
    金<b class='flag-5'>鉴</b><b class='flag-5'>实验室</b>协助鸿利智汇产品顺利通过AEC-Q102认证

    技术分享 | ISO 26262的安全分析之FMEA

    本期内容以系统架构设计为,讲解如何在ISO26262产品开发过程实施安全分析,半导体层面的芯片设计也可以参考本文相关内容执行安全分析。安
    的头像 发表于 04-15 11:32 1034次阅读
    技术分享 | <b class='flag-5'>ISO</b> <b class='flag-5'>26262</b><b class='flag-5'>中</b>的安全<b class='flag-5'>分析</b>之FMEA

    实验室·ISO 26262测试用得出方法-等价类的生成和分析

    -6-2018 标准规范给出了单元、集成、系统测试各阶段的建议测试使用方法,设计生成测试用
    的头像 发表于 07-30 15:37 260次阅读
    <b class='flag-5'>鉴</b><b class='flag-5'>源</b><b class='flag-5'>实验室</b>·<b class='flag-5'>ISO</b> <b class='flag-5'>26262</b><b class='flag-5'>中</b><b class='flag-5'>测试用</b><b class='flag-5'>例</b>的<b class='flag-5'>得出</b><b class='flag-5'>方法</b>-等价类的生成和<b class='flag-5'>分析</b>