前言
随着计算科学、控制科学、人工智能等信息技术的迅猛发展,嵌入式软件在武器系统、航空航天、工业控制、医疗电子、汽车电子、智能家电以及穿戴设备等领域已经无处不在,为人们的工作、生活、学习带来了极大的便利。与此同时,由于嵌入式软件处于整个系统的核心控制地位,因此其失效带来的损失往往是巨大的,一些安全关键领域中的软件失效甚至会危及人类生命和国家安全,即使是非安全性系统,大批量的生产也会导致严重的经济损失。这就要求对嵌入式系统,包括嵌入式软件进行严格的测试、确认和验证。
嵌入式软件测试相对于主机环境下的软件测试有其独有的特点,两者最大的不同在于硬件/软件集成测试阶段是嵌入式软件所特有的,目的是验证嵌入式软件与其所控制的硬件设备能否正确地交互。
受限于硬件的依赖性和测试环境的复杂性,目前高等教育人才培养方案中对于嵌入式软件测试的教学内容涉及较少,计算机和软件学院开设的软件测试课程几乎不涉及嵌入式软件的内容,也很少开设嵌入式系统课程,造成学生缺乏嵌入式系统的知识背景。电子学院和自动化学院开设的嵌入式系统类的课程一般只包括嵌入式软件开发的教学内容,很少涉及软件测试的理论和方法。而上述学院的毕业生是目前嵌入式软件测试人才的主要来源。嵌入式软件测试教材的欠缺是造成目前软件测试教学与人才能力需求有差距的主要原因,不利于嵌入式软件测试专门人才的培养,这种现状不仅存在于普通本科院校,也存在于高职院校,造成社会对于嵌入式软件测试的研究型人才和工程技术人才的需求缺口巨大。
同时,现有的软件测试领域尤其是嵌入式软件测试领域的教材普遍存在“过虚”或“过实”的问题。“过虚”教材通常只涉及软件部分的理论知识,缺少软件测试的实际案例,没有较为成熟的实验环境,即使有案例,也只停留在书本上,很难为学生提供上手实践的条件;“过实”的教材则大部分为面向某专用测试工具的“功能说明书”或者“操作手册”,使得初学者不知其所以然。真正能做到系统化“虚实结合”(即理论联系实际)的教材为数不多。
本书以“全面提高人才培养能力”的要求为目标,以嵌入式软件测试专业人员应该具备的基本能力为主线,以能够胜任一流本科专业建设的“规范”与“标杆”的高质量现代化教材为努力方向,在内容上兼顾软件测试知识体系的完整性和通用性,以及嵌入式软件测试的特殊性。
第1~3章介绍了软件测试的基本概念、原理和分类等基础理论,嵌入式系统和软件的组成与特点,以及嵌入式软件测试的特点、策略、方法和原则。
第4章介绍了常用的等价类划分测试、边界值测试、因果图测试、决策表测试、逻辑覆盖测试、组合测试以及蜕变测试等黑盒和白盒测试方法,每种方法都配有具体实例。
第5章以军工领域目前遵循的实际工程实践为依据,介绍了测试需求分析、测试设计与实现、测试报告撰写等主要内容,以帮助学生掌握如何开展实际项目的测试。
第6章从为什么需要自动化测试开始,阐述了嵌入式软件测试自动化的需求、理论原理、技术分类、应用原则等。
第7章分类介绍了现有可应用于嵌入式软件测试的自动化工具(超过20种测试工具)的功能与特点。
第8章通过全国大学生软件测试大赛嵌入式专项真题,讲解如何应用前面所学知识系统地组织、计划与实施嵌入式软件测试。
附录给出了测试过程中技术文档的模板。
本书附配套PPT、授课视频、相关教学案例以及习题答案(见华章官网hzbook.com)。实践部分配套提供全国大学生软件测试大赛嵌入式专项所使用的教学实践平台ETest教学版(http://www.kiyun.com/index.php?s=/show/fangzhen/cid/2/id/145.html),以实现和大赛相同的实验环境。
为了探索嵌入式人才能力培养的规律和推动国内高等教育软件测试实践教学的发展,本书作者联合南京大学的陈振宇老师、同济大学的朱少民老师、金陵科技学院的张燕老师以及南京邮电大学的王子元老师等在2016年开创了全国大学生软件测试大赛,吸引了国内各层次高校的博士生、硕士生、本科生、高职学生的广泛参与。大赛中设立了嵌入式软件测试专项,经过5届大赛的探索和总结,我们对嵌入式软件测试的教学规律和教学实验环境有了更深的认识和理解。除此之外,我们还听取和采纳了国内从事软件测试教学的老师、大赛合作企业的专家的建议和需求,对教学内容和框架进行了反复思考和取舍。在此对提出建议和意见的大赛发起者和各学校带队老师表示感谢。
本书不仅能满足嵌入式软件测试相关课程的日常教学需要,而且在内容上兼顾了嵌入式软件测试竞赛指导需求,在实验环境上兼顾了带有硬件实验箱和纯模拟环境条件下实践教学与竞赛环节的开展。准备参加全国软件测试大赛的老师和学生可以把本书作为参赛指导书。
本书可以作为本科院校软件测试课程的教材。如果高职院校选用本教材,可以对理论和方法部分进行必要的取舍,如可跳过蜕变测试、自动化测试理论等内容。此外,本书兼顾理论和实践的教学内容,对于刚进入软件测试行业的从业人员来说,也可以增强他们的嵌入式软件测试能力,提升专业技能。
感谢研究生孙金磊、吴开舜、姚永明、陈明宇、骆润、杨森、阳真、王廷永、罗浩榕、万进勇等同学的辛苦付出,感谢大家在资料准备、大赛数据分析以及勘误方面做的大量工作。即使有这么多幕后英雄,本书仍不可避免地会存在错误和不足,欢迎读者不吝指教,我们将在后续版本中继续完善。