《软件测试技术与项目实践》全面介绍软件测试技术和实际应用,全书分3篇,共10章。
基础篇(第1~4章)详细介绍软件测试的基本概念、功能和单元测试用例设计方法。技术篇(第5~8章)深入探讨接口及接口自动化测试、Web UI自动化测试、性能测试。扩展篇(第9、10章)重点讲述移动App非功能测试和渗透性测试等内容。全书引入合同管理系统项目作为实践案例,帮助读者掌握软件测试的核心技能。此外,本书还配套有阿尔法辅助教学平台,为读者提供线上线下相结合的灵活学习方式,有助于提升学习效果。
本书适合作为高等学校计算机相关专业本科生软件测试技术课程的教材,也可供软件测试技术人员参考使用。
新时代下软件测试技术越来越受到重视,软件测试工程师越来越稀缺。本教材研发团队有丰富的软件测试行业实践经验,都有软件技术专业教育背景或是从事过多年的软件测试实践,均具备扎实的学术背景和专业知识,如都深入了解软件开发生命周期、测试方法论、测试技术和相关工具,可确保教材的准确性和专业性,能够将实际项目中遇到的问题和解决方案融入教材中,使之更加实用和贴近实际应用。
近些年来,随着软件技术的发展升级,编者们对软件测试领域最新研究和发展有着持续的关注,如:了解并应用着新的测试方法、技术和工具。这样可以确保教材的内容与时俱进,反映当前行业的最佳实践。
编写本书能够为读者提供全面、系统和结构化的软件测试知识,帮助读者建立起正确的测试思维和方法,提升软件质量和测试效率。相信本教材能够帮助读者深入理解软件测试的核心概念和技术,并能够应用于实际项目中。同时,本教材编写团队可以根据教材的定位和目标读者群体的需求,提供丰富的案例和实践经验,让读者在实际操作中获得更多的知识和技能。
数字化时代,软件已经成为生活和工作不可或缺的一部分,软件质量是企业和用户最为关心的问题之一。软件的稳定性和可靠性直接关系到用户体验和业务的成败。因此,确保软件质量成为软件开发过程中至关重要的一个环节。软件测试作为确保软件质量的关键环节,其重要性不言而喻。
为了满足企业和用户对高质量软件的需求,《软件测试技术与项目实践》应运而生。本书不仅详细介绍了软件测试的基本理论和方法,还结合合同管理系统项目实践,帮助读者更好地理解和掌握软件测试的技巧和经验。
书中涵盖了自动化测试、性能测试、安全测试等多种测试类型,力求为读者提供全面而深入的软件测试知识。
本书分3篇,共10章,第1~4章是基础篇,第5~8章是技术篇,第9、10章是扩展篇。各章内容概述如下。
1. 基础篇
第1章软件测试概述: 介绍软件测试的重要性、定义、目的、原则,以及软件缺陷的处理方法。
第2章软件测试入门: 讲解软件测试级别、常见应用软件的基本特征、软件测试的基本思路和测试用例设计方法,并通过合同管理系统案例分析测试思路。
第3章功能测试: 介绍功能测试用例设计方法,包括等价类划分法、边界值分析法、组合测试用例设计技术、因果图法、决策表法和场景法,并通过合同管理系统案例进行演练。
第4章单元测试: 介绍白盒测试方法,包括逻辑覆盖法、基本路径测试法,以及常用单元测试工具,并通过ToDoList项目进行演练。
2. 技术篇
第5章接口测试: 讲解接口测试的价值、定义,HTTP协议解析,Postman工具使用,并通过合同管理系统项目进行演练。
第6章Python接口自动化测试: 介绍接口自动化测试的概念,Requests库和Pytest工具,并通过合同管理平台项目进行演练。
第7章Web UI自动化测试: 介绍Selenium的基本概念,WebDriver、WebElement接口和自动化测试模型,并通过Selenium轻量级UI自动化测试框架进行演练。
第8章性能测试: 讲解性能测试基础知识、JMeter工具使用、与Jenkins的集成,并通过合同管理系统项目进行演练。
3. 扩展篇
第9章移动App非功能测试: 介绍移动App启动时间、流量、CPU和电量测试方法。
第10章渗透性测试: 讲解Web应用安全基础、SQL注入漏洞、XSS跨站脚本漏洞、CSRF和文件上传漏洞的原理和防范措施。
4. 教学资源下载与学习
本书配套的合同管理系统,读者可以登录阿尔法辅助教学平台获取相关资源。
本书由北京信息科技大学王磊任主编,负责确定本书的主题方向和整体框架,并编写第1、2章;另一位主编是北京浩泰思特科技有限公司资深软件测试工程师郝志卿,负责编写第3章;北京信息科技大学卢慧雅任副主编,负责编写第4、8章;吕梁学院高文莲任副主编,负责编写第9、10章;吕梁学院董红松负责编写第5章;山西金融职业学院郭莹洁负责编写第6、7章。
尽管我们做了努力,本书仍难免有疏漏和不足之处,望读者指正。
编者2025年6月
第一篇基础篇
第1章软件测试概述3
1.1为什么要进行软件测试3
1.2软件测试的定义4
1.2.1软件测试定义的正反两面性4
1.2.2服从于用户需求的软件测试5
1.3软件测试的目的5
1.4软件测试的原则6
1.5软件缺陷7
1.5.1一个简单的缺陷报告7
1.5.2缺陷报告的重要组成9
1.5.3完整的缺陷信息列表11
1.5.4缺陷的管理11
1.6实践: 寻找合同管理系统缺陷13
1.6.1合同管理系统需求说明书13
1.6.2合同管理系统地址及用户13
1.6.3任务一: 合同列表页面的缺陷说明14
1.6.4任务二: 合同新增页面的缺陷说明15
1.7本章小结17
第2章软件测试入门18
2.1软件测试级别18
2.1.1单元测试18
2.1.2集成测试21
2.1.3系统测试24
2.1.4验收测试25
2.2常见应用软件的基本特征25
2.3软件测试的基本思路27
2.3.1增加功能的测试思路27
2.3.2修改功能的测试思路29
2.3.3删除功能的测试思路29
2.3.4查询功能的测试思路30
2.3.5导入/导出功能的测试思路31
2.3.6计算功能的测试思路31
2.3.7业务流程32
2.4测试用例34
2.4.1为什么需要测试用例34
2.4.2什么是测试用例34
2.4.3一个简单的测试用例35
2.4.4测试用例的元素35
2.5实践: 合同管理系统测试思路分析37
2.5.1新增合同功能测试思路分析37
2.5.2修改合同功能测试思路分析39
2.5.3作废合同功能测试思路分析39
2.5.4查询合同功能测试思路分析40
2.5.5业务流程梳理42
2.6本章小结43
第3章功能测试44
3.1功能测试用例设计44
3.2等价类划分法45
3.2.1等价类划分法的定义45
3.2.2有效等价类和无效等价类45
3.2.3划分等价类的规则46
3.2.4等价类划分法实例分析47
3.3边界值分析法48
3.3.1如何确定边界值49
3.3.2边界值法实例分析49
3.4组合测试用例设计技术50
3.4.1全面测试50
3.4.2单因素覆盖51
3.4.3正交试验法53
3.4.4两两组合56
3.4.5具有约束关系的组合测试59
3.4.6种子组合测试62
3.5因果图法62
3.5.1因果图的基本符号62
3.5.2因果图法实例分析63
3.6决策表法67
3.6.1决策表的构成67
3.6.2决策表法实例分析67
3.7场景法69
3.7.1场景法70
3.7.2场景法实例分析70
3.8实践: 合同管理系统测试用例设计73
3.8.1测试方法选择的综合策略73
3.8.2创建合同用例设计74
3.8.3修改合同用例设计76
3.8.4作废合同用例设计78
3.8.5查询合同用例设计78
3.8.6审批合同用例设计80
3.9本章小结81
第4章单元测试82
4.1单元测试用例设计82
4.2白盒测试83
4.2.1逻辑覆盖法83
4.2.2基本路径测试法87
4.3单元测试框架92
4.3.1JUnit介绍92
4.3.2用JUnit进行单元测试97
4.4任务: ToDoList单元测试用例设计及运行127
4.4.1创建待办事项单元测试129
4.4.2标记待办事项完成单元测试131
4.4.3列表查询单元测试134
4.5本章小结137
第二篇技术篇
第5章接口测试141
5.1接口测试的价值与体系141
5.2接口测试的定义142
5.3HTTP协议解析142
5.3.1URL142
5.3.2请求报文143
5.3.3响应报文143
5.3.4保持连接状态144
5.4接口测试工具Postman144
5.4.1安装Postman工具144
5.4.2创建完整请求144
5.5实践: 合同管理系统项目进行接口测试146
5.5.1被测接口介绍146
5.5.2保持接口的登录状态146
5.5.3执行接口测试148
5.6本章小结149
第6章Python接口自动化测试150
6.1接口自动化测试介绍150
6.1.1为什么要做接口自动化测试150
6.1.2接口自动化测试工具150
6.2Requests库介绍150
6.2.1Requests库入门150
6.2.2GET方法151
6.2.3POST方法151
6.2.4Requests主要方法解析154
6.3利用Pytest进行测试管理155
6.3.1认识Pytest155
6.3.2用例的识别与运行156
6.3.3Pytest实现前后置157
6.3.4参数化用例159
6.3.5结合Allure生成测试报告160
6.4实践: 合同管理系统接口自动化测试163
6.4.1定义BaseAPI类,封装request164
6.4.2实现业务接口的API Object164
6.4.3构建API Object模式的测试实例165
6.4.4结合Allure生成测试报告167
6.5本章小结168
第7章Web UI自动化测试169
7.1Selenium介绍169
7.1.1安装Selenium170
7.1.2第一个Selenium Python脚本170
7.1.3WebDriver原理172
7.1.4控件的识别与定位172
7.2Selenium WebDriver173
7.2.1Selenium WebDriver的常用方法173
7.2.2WebDriver的功能173
7.2.3示例: 登录合同管理系统174
7.2.4正则匹配示例摘取合同编号174
7.3WebElement接口175
7.3.1WebElement功能175
7.3.2WebElement方法175
7.3.3示例: 作废合同176
7.4自动化测试模型介绍177
7.4.1线性测试177
7.4.2模块化与类库178
7.4.3数据驱动179
7.4.4关键字驱动179
7.5UI自动化测试框架(PageObject模式)180
7.5.1认识PageObject180
7.5.2BasePage对象181
7.5.3实现PageObject181
7.5.4构建PageObject模式测试实例183
7.6本章小结184
第8章性能测试185
8.1性能测试概述185
8.1.1为什么要进行性能测试185
8.1.2性能定义188
8.1.3性能测试分层模型188
8.1.4性能测试术语和指标189
8.1.5性能测试的流程190
8.2性能测试工具JMeter191
8.2.1概述191
8.2.2作用192
8.2.3环境搭建192
8.2.4基本组件193
8.2.5脚本增强参数化205
8.2.6脚本增强关联207
8.2.7脚本增强逻辑控制211
8.2.8脚本增强保存数据212
8.2.9脚本增强集合点215
8.2.10脚本增强事务217
8.2.11函数助手217
8.2.12JMeter插件安装221
8.2.13命令行执行脚本222
8.3结合Jenkins工具持续集成222
8.4实践: 合同管理系统性能测试223
8.4.1通过代理录制脚本223
8.4.2手动添加请求230
8.4.3运行测试场景233
8.5本章小结238
第三篇扩展篇
第9章移动App非功能测试241
9.1移动App启动时间测试241
9.1.1用户体验角度的App启动时间241
9.1.2常见的App启动时间测试方法241
9.1.3使用adb获得App启动时间示例242
9.2移动App流量测试243
9.2.1App流量测试场景243
9.2.2App流量测试示例243
9.3移动App CPU测试243
9.3.1App的CPU测试场景244
9.3.2App的CPU占用率测试示例244
9.4移动App电量测试245
9.5本章小结245
第10章渗透性测试246
10.1Web应用安全基础246
10.2SQL注入漏洞247
10.2.1SQL注入原理247
10.2.2SQL注入的后果248
10.2.3SQL注入漏洞攻击流程249
10.2.4注入点类型249
10.2.5SQL注入的防范措施251
10.3XSS跨站脚本漏洞252
10.3.1XSS原理解析252
10.3.2XSS类型253
10.3.3查找XSS漏洞的过程256
10.3.4XSS防御256
10.4CSRF257
10.4.1CSRF攻击原理257
10.4.2CSRF攻击场景258
10.4.3查找CSRF漏洞260
10.4.4预防CSRF261
10.5文件上传漏洞261
10.5.1文件上传漏洞利用场景261
10.5.2文件上传漏洞的测试流程264
10.5.3文件上传防御264
10.6本章小结264
参考文献265
附录A阿尔法编程使用说明266