《软件测试》是软件工程专业中一门综合性很强的基础课程,该课程从理论、标准、技术和工具等多方面介绍了软件测试,主要内容有软件测试背景及分类、软件测试模型、软件测试的基础方法、软件测试的整体过程、软件测试活动的组织与管理、敏捷项目测试、面向对象的软件测试、软件测试自动化、缺陷跟踪管理、单元测试工具JUnit、接口测试工具、基于Python的自动化测试、负载测试工具LoadRunner、网上书店系统测试、生活小工具微服务测试和手机视频播放软件测试等。
本课程的目的与任务是使学生通过本课程的学习,从软件测试的基础理论知识入手,循序渐进的学习软件测试的各种相关工具应用,并通过引入实际案例的测试过程学习,帮助学生更好的掌握软件测试技能,做到理论与实践相结合,方法与应用相结合。本课程除要求学生掌握软件测试的基础知识和工具使用,包括软件测试的基本概念、相关模型、基础方法、执行过程以及常用的自动化测试工具的使用方法等,重点要求学生学会分析问题的思想和方法,为更深入地学习和今后的实践打下良好的基础。
了解软件测试的定义和历史背景,了解软件缺陷的定义和出现原因;了解软件测试的目的和原则;掌握常用的软件测试分类方法,包括按测试阶段分为单元测试、集成测试、确认测试、系统测试和验收测试,按要不要执行被测试软件分为静态测试和动态测试,按要不要查看代码分为白盒测试、黑盒测试和灰盒测试等;了解软件测试行业的现状与前景。
了解软件开发的基本过程和常见的软件开发过程模型;了解软件测试的基本流程;了解软件测试过程模型的概念,掌握V模型、W模型、H模型、X模型以及前置测试模型等常用的软件测试过程模型;了解软件测试过程改进模型的概念及典型模型种类。
了解静态测试和动态测试的内容及方法;了解桌面检查、代码审查、走查的概念与区别;掌握模块控制流图的使用方法;了解主动测试与被动测试的区别;了解程序插桩法、逻辑覆盖法、基本路径法等白盒测试方法,掌握语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖和路径覆盖等常用覆盖准则;掌握等价类划分法、边界值分析法、因果图法、决策表法、正交试验法和场景法等常用黑盒测试方法。
了解单元测试的定义及原则,了解其内容与过程;掌握函数覆盖、Z路径覆盖、ESTCA覆盖、LCSAJ覆盖和MC/DC覆盖等常用覆盖准则;了解集成测试的定义及内容,掌握基于功能分解的集成测试、基于调用图的集成测试以及基于路径的集成测试方法;了解系统测试的定义及原则,掌握包括功能测试、性能测试、安装测试、压力测试、容量测试、安全性测试、健壮性测试、可用性测试、用户界面测试、文档测试在内的系统测试内容;了解验收测试的内容及过程,掌握α测试、β测试的内容。
了解软件测试项目的基本特性;了解软件测试项目管理的特性和原则;了解软件测试项目的范围管理方法;了解软件测试管理计划的制订和执行过程;了解主要的软件测试文档;了解测试的组织和人员管理机制;了解软件测试的过程管理、配置管理、风险管理和成本管理内容。
了解敏捷开发的概念;了解敏捷项目管理中的需求管理、时间管理和质量管理相关联的内容;了解敏捷测试项目中自动化测试和探索式测试的重要性,了解探索式测试的测试方法。
了解面向对象的基本概念,包括抽象、继承、封装、重载、多态等;了解面向对象的对象模型、动态模型和功能模型内容;了解面向对象的单元测试、集成测试、系统测试以及回归测试的策略;了解面向对象软件的测试用例设计的相关内容。
了解自动化测试的概念、优缺点以及与手动测试的比较;掌握代码分析、捕获/回放、录制/回放、脚本技术等自动化实现的原理和方法;了解自动化测试的生命周期;了解自动化测试的方案选择方法;了解自动化测试工具的分类,了解常用的白盒测试工具、功能测试工具、性能测试工具以及测试管理工具。
了解缺陷管理的目的和意义;了解缺陷管理工具的分类;了解选择缺陷管理工具必须要格外注意的事项;了解3种缺陷管理工具Redmine、Bugzilla和JIRA的特点和功能。
了解接口测试的目的和意义;了解接口测试工具的分类;了解选择接口测试工具必须要格外注意的事项;了解常用接口测试工具SoupUI、Jmeter和Postman的特点和使用方法。
了解LoadRunner的基本工作流程,使用LoadRunner制定负载测试计划,场景测试脚本,设计运行场景,运行测试并分析结果等。
了解Selenium的工作原理;了解PageObject页面对象原理;了解Python原生单元测试框架Unittest的测试流程、测试日志的编写和测试报告的生成;了解基于Python的Pytest测试框架的测试流程。
本课程教育学生的方式以教师为主导的启发式讲授教学法为主,讨论(提问)式教学为辅,结合课外学习的教育学生的方式。实验以学生动手实验为主,教师的启发式讲授教学法为辅,并结合讨论(提问)式教学,以及结合课外学习的教育学生的方式。
1.本课程概念较多,因此教学形式以讲授方式为主。本课程拟采用多媒体PPT的教学方法,增加课堂信息,浅显通俗地对概念、定义和原理进行解释,增加教学的直观性,教学过程中注意各个知识点的关联性,以使学生更好地理解课程内容。
3.为加强和落实动手能力的培养,每章课后应安排作业,帮助学生学习和应用。
本课程共48个学时,其中理论32个学时,讲授16周(每周2学时);实验16个学时,讲授8周(每周2学时)。
1.做好课前预习,预习时以教材为主,了解相关的概念、定义、原理。预习中认真思考,以便带着问题主动地听课。
2.课后要复习,有余力的学生复习时还应阅读参考资料,认真整理课堂听课笔记。
3.要求学生课外自主学习,学生课外阅读的参考资料以本大纲所列参考资料为主。
本课程成绩由平时成绩和期末考核成绩组合而成,课程成绩以百分制计算,分配比例如下:
1.平时成绩占30%,主要考查作业的完成程度,理论课和实验课的出勤率,实验课的考试结果。其中作业占10%,实验占15%,出勤率占5%。
2.期末成绩占70%,采用考试的考核方式。考试采用闭卷形式,题型为选择题、正确/错误题、填空题、简答题,以及应用题。
本书较为全面、系统地阐述了当前软件测试领域的理论和实践知识,介绍了当前新的软件测试理论、标准、技术和工具。全书共三部分16章。第一部分(第1~7章)包括软件测试概述、软件测试模型、 软件测试方法、软件测试过程、 软件测试管理、敏捷项目测试、面向对象软件测试;第二部分(第8~13章)包括软件测试自动化、缺陷跟踪管理、 JUnit单元测试、接口测试工具、LoadRunner性能测试、基于 Python的自动化测试;第三部分(第14~16章)包括 网上书店系统测试、生活小工具微服务测试和手机视频播放App测试。每章均有实际案例作为补充,以加深读者对软件测试技术和过程的理解,做到理论与实践相结合。
了解缺陷管理的目的与意义;了解缺陷管理工具的分类;掌握项目管理工具Redmine、缺陷管理工具Bugzilla和问题跟踪工具JIRA的使用。
了解单元测试工具JUnit的组成和测试过程;了解JUnit的基本功能;了解JUnit的安装与集成方法;掌握JUnit的测试用例编写和使用方式。
了解接口测试工具的分类和选择;掌握SoapUI的使用方式;掌握JMeter的使用方式;掌握Postman的使用方式。
了解LoadRunner的基本功能;了解LoadRunner的主要特性、组件和相关术语;掌握利用LoadRunner进行负载测试的流程与方法。
了解网站测试的内容;了解网站测试的过程;结合网上书店系统测试实例了解测试计划的安排、测试用例的设计以及测试结果的记录和分析等内容。
了解微服务架构的发展;了解微服务架构的优缺点;了解接口测试的流程;结合生活小工具微服务测试实例了解用Postman做功能测试,利用JMeter做压力测试的过程。
了解手机app测试与PC软件测试的异同;了解手机app测试的基本过程;了解现行的几大手机平台及其特点;结合手机视频播放APP测试实例了解手机app测试如何执行,包括软件的测试计划到测试用例的制定,再到测试过程的描述,最后到测试结果的统计。
通过本次课的学习,了解软件缺陷的定义,了解软件测试的目的和原则以及行业前景,掌握常用的软件测试分类方法。
1.吕云翔,况金荣,朱涛,杨颖,张禄.软件测试技术[M].北京:清华大学出版社,2021.
总结并逐步深入体会软件测试的定义、目的、原则及软件缺陷的出现原因,及时复习熟悉常用的软件测试分类方法。
软件测试在软件开发中的地位和关系、软件测试的基本流程、软件测试相关的模型方法。
通过本次课的学习,了解软件开发的基本过程和软件测试的基本流程,了解软件测试过程改进模型的概念,掌握常用的软件测试过程模型。
重点:常见的软件开发过程模型、常用的软件测试过程模型、软件测试过程改进模型的概念。
1.吕云翔,况金荣,朱涛,杨颖,张禄.软件测试技术[M].北京:清华大学出版社,2021.
总结并逐步深入体会软件开发过程模型以及软件测试的基本流程,及时复习熟悉常用的软件测试过程模型。
通过本次课的学习,了解桌面检查、代码审查、走查的概念与区别,了解主动测试与被动测试的区别,了解函数调用关系图和模块控制流图的使用方法。
重点:代码检查的概念与常用方法、函数调用关系图和模块控制流图的使用方法。
1.吕云翔,况金荣,朱涛,杨颖,张禄.软件测试技术[M].北京:清华大学出版社,2021.