开篇:润墨网以专业的文秘视角,为您筛选了一篇软件测试的认知误区和单元测试实战流程范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:软件测试是提高软件质量的关键方法之一,软件单元测试是软件测试中一个重要的步骤,充分的单元测试对发现和排除软件中的缺陷非常有效,并且成本很小。但在软件项目实践中,软件测试的作用还没有受到特别的重视,许多软件项目组的工程师还存在对软件测试的认知误区,这严重影响了软件测试工作高品质的开展。文章针对嵌入式软件单元测试,结合工程实践,明确了单元测试的要求以及重点,介绍了一种高效、容易操作单元测试流程。
关键词:软件测试;认知误区;嵌入式;单元测试流程
1 软件测试简述
软件测试是在软件投入商用前,对软件需求分析报告、设计规格说明书和编码的最终复查,是软件质量保证的关键方法,软件测试并不等于程序测试。它贯穿于软件定义和开发的整个过程,因此,软件需求分析、软件概要设计、软件详细设计和程序编码等各阶段所得到的文档,包括需求规格说明书、概要设计说明书、详细设计说明书,以及源代码都是软件测试的测试对象。随着软件规模的不断扩大,以及软件设计复杂程度不断的提高,软件开发中出现失误或缺陷的概率越来越大。随着市场对软件质量重要性的认知程序的提高,因此软件测试在软件项目实施过程中的重要性尤为突出。软件测试将会成为一个具有很大发展前景的行业,市场将需要更多具有丰富测试技术和先进管理经验的测试技术员和项目经理。
2 软件开发项目测试的误区
软件测试从1990年左右进入中国,目前国内大的测评中心、大型企业已经完全掌握了软件测试的测试策略和测试方法。小企业普遍存在测试人员不懂什么是单元测试,怎样进行单元测试,很少能看懂代码的细节。而开发人员很少能够提供完整的详细设计报告、需求报告。导致单元测试,以拼凑测试报告为目的。
认知误区一:软件测试是软件开发的最后一道步骤,工程师们一般认为,软件实际项目要经过下面六个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件。因而,认为软件测试只是编码后的一个孤立的阶段,这就是不了解软件测试流程的认知偏差。软件测试是一个系列的活动过程,是一个开放的体系,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。从而,软件测试应当贯穿于软件项目的整个生命周期,并不是软件开发后最后一道步骤。认知误区二:软件商用后如果发现质量问题,就武断认为是软件测试人员的工作失误。这种认识很狭隘,很是打击软件测试人员的工作积极性。软件测试只能确认软件存在错误,不能保证软件没有错误。因为从根本上讲,软件测试不可能发现全部错误,软件后的错误可能来自软件项目中的各个过程。认知误区三:软件测试对测试人员技术要求不高,任何人都可以做。很多工程师认为软件测试就是安装并运行程序,按按键盘的重复性工作。随着软件测试技术的不断改进和完善,新测试方法、新流程、新工具都在不断被开发出来。这就需要软件测试工程师掌握和学习很多专业测试新理念和新技能。认知误区四:只有编写程序的高手才是软件专家,而软件测试没有前途。由于我国软件行业整体研发能力比较低,软件开发过程不规范。不少软件项目的开发都还停留在“累加堆叠“阶段。项目开发依靠个别程序员决定,他们一人负责总体设计和代码编写,给人的印象是程序员是真正的牛人,完成了所有的软件项目开发工作。但在微软等世界知名软件企业里,软件测试人员的待遇和数量与一般程序员没有多少差异,优秀测试人员的待遇甚至比普通程序员要高的多。
3 嵌入式软件单元测试流程
单元测试是指对软件中的最小可测试单元进行检查和验证。单元是规格说明书中的最小单元,包括函数、子程序、程序。单元测试关注独立的函数功能,是测试过程中最低级别的测试活动。需要开发一个或多个测试用例执行单元测试。把代码问题缩小范围在开发阶段锁定Bug是单元测试的主旨要求,以下将介绍一种容易操作的嵌入式单元测试实战流程。
第一阶段,制定测试记录表,记录测试过程,和测试情况。测试记录表包含:源文件名,子函数名,用例标号,用例名称,用例个数,用例通过个数,语句覆盖率,分支覆盖率,MC/DC覆盖率,测试结果,问题描述,测试人员,测试时间。针对第一阶段的测试结果,此时需要大家分析出问题的代码,各抒己见,总结问题,给出解决方法。
第二阶段,解决部分测试用例failed问题,找出阻止生成用例的共性。常见问题汇总:局部变量未初始化,调用函数未声明,局部变量直接赋值,结构体嵌套、结构体指针、声明问题、声明位置问题,函数指针,大循环、死循环,绝对地址,指针变量,C语言程序中带有goto语句。解决办法:局部变量声明后,需要赋初值再使用。调用函数未声明,该问题发生在隔离测试阶段,属于代码书写不规范问题。解决方法:自定义的函数都需要在头文件中做统一声明。局部变量直接赋初值:该问题发生在测试用例无法生成阶段,属于代码书写不规范问题。解决方法,结构体局部变量,指针变量需要先声明后赋初值。结构体嵌套、结构体指针、声明问题、声明位置问题:该问题也属于代码书写不规范问题。解决方法:根据MISRA代码书写规范,结构体需要放在头文件中统一声明。大循环、死循环:单元测试需要有程序结束的出口。解决方法:把大循环改为小循环,注释掉死循环(if(1)、for(; ;),while(1))。绝对地址:单元测试不连接真实的硬件设备。遇到寄存器等绝对地址时,需要对寄存器做变量处理。指针变量:需要声明一个同类的数组,然后把数组的首地址,赋给指针变量。函数指针:需要虚构一个函数实体,取函数地地址赋给函数指针,完成映射。C语言程序中带有goto语句:需要改变程序结构,增加判断语句,去除所有的goto语句,以便确保C语言程序的稳定性。
测试第三阶段:基本圈复杂度高于MISRA阀值要求的函数,先考虑把复杂函数改为几个小函数。改不了的由开发人员写声明以及具体原因,再按照路径分支来设计测试用例。汇总测试结果,提交测试问题报告单,并提交行业标准测试报告。
4 结束语
文章简述了软件测试的基本概念,澄清了软件测试工程实践中的几个误区,依据单元测试实践的具体案例,介绍了一种高效、容易操作的嵌入式单元测试的流程。
参考文献
[1]胡丹,杜新华.基于目标机的嵌入式软件单元测试[J].电子测量技术,2006(2).
[2]赵正海,王宁.跟踪雷达“指示引导”功能软件测试方法研究[J].现代电子技术,2013(36).
[3]于园园.软件测试技术与测试管理研究[J].江苏科技信息,2016(7).
[4]王琨.嵌入式计算机软件测试关键技术探讨[J].科技创新与应用,2016(7).
[5]张金环,田洪涛.浅析设备软件测试与质量保证[J].电子工业专用备,2016,45(1).
作者简介:张军(1988-),男,陕西武功人,工学硕士,助理工程师,主要研究方向:雷达信号处理算法、数字中频收发机和嵌入式软件测试。
李攀(1987-),男,陕西西安人,工学硕士,助理工程师,主要研究方向:相控阵雷达天线技术与测试。
邢光辉(1990-),男,陕西大荔人,工学学士,助理工程师,主要研究方向:数字中频收发机技术与测试。