目录 资源下载 第1篇软件测试的原理与方法 第1章引论 1.1软件测试的必要性 1.1.1迪士尼并不总是带来笑声 1.1.2一个缺陷造成了数亿美元的损失 1.1.3火星探测飞船坠毁 1.1.4人类容易得健忘症——再次忽视了集成测试 1.1.5错误指令造成骑士资本集团损失4.4亿美元 1.1.6AWS宕机整整4小时 1.1.7预订的酒店住不进去导致旅客露宿街头 1.1.8Uber泄露个人隐私导致用户要求赔偿3亿多元 1.1.9更多的悲剧 1.2为什么要进行软件测试 1.3什么是软件测试 1.3.1软件测试学科的形成 1.3.2正反两方面的争辩 1.3.3软件测试的定义 1.3.4软件测试的其他观点 1.4测试和质量保证的关系 1.5测试和开发的关系 1.6测试驱动开发的思想 小结 思考题 第2章软件测试的基本概念 2.1软件缺陷 2.1.1软件质量的内涵 2.1.2软件缺陷的定义 2.1.3软件缺陷的测试判断准则 2.1.4软件缺陷的产生 2.1.5软件缺陷的构成 2.1.6修复软件缺陷的代价 2.2软件测试的分类 2.3静态测试和动态测试 2.3.1产品评审 2.3.2静态分析 2.3.3验证和确认 2.4主动测试和被动测试 2.5黑盒测试和白盒测试 2.6软件测试层次 2.7软件测试工作范畴 2.7.1测试分析 2.7.2测试策略制订 2.7.3测试计划 2.7.4测试设计 2.7.5测试执行 2.7.6测试结果和过程评估 小结 思考题 实验1完成一个简单的测试过程 第3章软件测试方法 3.1基于直觉和经验的方法 3.1.1Adhoc测试方法和ALAC测试方法 3.1.2错误推测法 3.2基于输入域的方法 3.2.1等价类划分法 3.2.2边界值分析法 3.3基于组合及其优化的方法 3.3.1判定表方法 3.3.2因果图法 3.3.3Pairwise方法 3.3.4正交试验法 3.4基于逻辑覆盖的方法 3.4.1判定覆盖 3.4.2条件覆盖 3.4.3判定条件覆盖 3.4.4条件组合覆盖 3.4.5基本路径覆盖 3.5基于缺陷模式的测试 3.5.1常见的缺陷模式 3.5.2DPBT的自动化实现 3.6基于模型的测试 3.6.1功能图法 3.6.2模糊测试方法 3.7形式化测试方法 3.7.1形式化方法 3.7.2形式化验证 3.7.3扩展有限状态机方法 小结 思考题 第4章软件测试流程和规范 4.1传统的软件测试过程 4.1.1W模型 4.1.2TMap 4.2敏捷测试过程 4.2.1敏捷测试的价值观和原则 4.2.2传统测试和敏捷测试的区别 4.2.3敏捷测试流程 4.2.4SBTM 4.3软件测试学派 4.4测试过程改进 4.4.1TMMi 4.4.2TPI 4.4.3CTP 4.4.4STEP 4.5软件测试规范 小结 思考题 第2篇软件测试的技术 第5章单元测试与集成测试 5.1代码静态测试 5.1.1编码的标准和规范 5.1.2代码评审 5.2代码评审案例分析 5.2.1空指针保护错误 5.2.2数据类型转换错误 5.2.3字符串或数组越界错误 5.2.4资源不合理使用 5.2.5不当使用synchronized导致系统性能下降 5.3代码静态检测工具 5.3.1FindBugs检查代码缺陷 5.3.2PMD检查代码缺陷 5.3.3CheckStyle检查代码风格 5.3.4SonarQube构建自动的代码扫描 5.4单元测试的目标和任务 5.4.1为何要进行单元测试 5.4.2单元测试的目标和要求 5.4.3单元测试的任务 5.4.4驱动程序和桩程序 5.4.5类测试 5.5分层单元测试 5.5.1Action层的单元测试 5.5.2数据访问层的单元测试 5.5.3Servlet的单元测试 5.6单元测试工具 5.6.1JUnit介绍 5.6.2IntelliJ IDEA中的JUnit应用举例 5.6.3Mock框架Mockito 5.6.4测试覆盖率工具JaCoCo 5.6.5JUnit 5+Gradle构建自动的单元测试 5.6.6开源的单元测试工具 5.7系统集成的模式与方法 5.7.1单体架构的集成测试 5.7.2微服务架构的集成测试 5.7.3持续集成及其测试 小结 思考题 实验2单元测试实验 第6章系统测试 6.1系统功能测试 6.1.1功能测试要求和基本思路 6.1.2面向接口的功能测试 6.1.3面向UI的功能测试 6.2功能测试自动化 6.2.1基于接口的自动化测试 6.2.2Web客户端的UI自动化测试——基于Selenium测试框架 6.2.3Web客户端的UI自动化测试——基于Cypress测试框架 6.2.4Android应用的UI自动化测试 6.2.5iOS应用的UI自动化测试 6.2.6移动应用测试工具Appium 6.3回归测试 6.3.1回归测试的目的 6.3.2回归测试的策略及其方法 6.4精准测试 小结 思考题 实验3系统功能测试 第7章专项测试 7.1性能测试 7.1.1系统性能指标和测试类型 7.1.2系统负载及其模式 7.1.3性能测试的基本过程 7.1.4性能测试结果分析 7.1.5Web性能测试 7.1.6压力测试 7.1.7容量测试 7.1.8前端性能测试工具 7.1.9后端性能测试工具 7.2安全性测试 7.2.1安全性测试的范围与方法 7.2.2贯穿研发生命周期的安全性测试 7.2.3Web安全性测试 7.2.4安全性测试工具 7.3兼容性测试 7.3.1软件兼容性测试 7.3.2数据共享兼容性测试 7.3.3硬件兼容性测试 7.4可靠性测试 7.4.1可靠性测试方法 7.4.2容错性测试 7.4.3数据库并发控制测试 7.5易用性测试 7.5.1良好的UI要素 7.5.2用户体验测试方法和模型 7.5.3A/B测试 小结 思考题 实验4性能测试实验 实验5安全性测试实验 第8章软件本地化测试 8.1什么是软件本地化 8.1.1软件本地化与国际化 8.1.2字符集问题 8.1.3软件国际化标准 8.1.4软件本地化基本步骤 8.1.5软件本地化测试 8.2翻译验证 8.3本地化测试的技术问题 8.3.1数据格式 8.3.2页面显示和布局 8.3.3配置和兼容性问题 8.4本地化的功能测试 小结 思考题 第9章测试自动化及其框架 9.1测试自动化的内涵 9.1.1手工测试的局限性 9.1.2什么是测试自动化 9.1.3软件测试自动化的优势 9.2测试自动化实现原理 9.2.1代码分析 9.2.2脚本技术 9.2.3对象识别 9.2.4接口调用 9.2.5自动比较技术 9.3测试自动化的实施 9.3.1测试自动化系统的构成 9.3.2测试工具的分类 9.3.3测试工具的选择 9.3.4测试框架的构成和分类 9.3.5自动化测试的分层策略 9.4API自动化测试框架 9.4.1API自动化测试框架Karate 9.4.2Karate测试 RESTful API的实例 9.5移动应用的自动化测试框架 9.5.1自动化测试的实现方式 9.5.2Appium及其工作原理 9.5.3Airtest自动化测试框架 小结 思考题 实验6部署自动化测试框架 第3篇软件测试项目实践 第10章测试需求分析与测试计划 10.1测试的目标和准则 10.2测试需求分析 10.2.1测试需求分析的基本方法 10.2.2测试需求分析的技术 10.2.3功能测试范围分析 10.2.4非功能性的系统测试需求 10.3测试项目的估算与进度安排 10.3.1测试工作量估算 10.3.2工作分解结构表方法 10.3.3资源的安排 10.3.4测试里程碑和进度表 10.4测试风险和测试策略 10.4.1测试风险管理计划 10.4.2基于风险的测试 10.4.3测试策略的确定 10.5测试计划的内容与编制 10.5.1测试计划的内容 10.5.2测试项目的计划过程 10.5.3制订有效的测试计划 小结 思考题 实验7制订测试计划 第11章设计和维护测试用例 11.1测试用例的构成及其设计 11.1.1测试用例的重要性 11.1.2测试用例设计书写标准 11.1.3测试用例设计的考虑因素 11.1.4测试用例设计的基本原则 11.2测试用例的组织和跟踪 11.2.1测试用例的属性 11.2.2测试套件及其构成方法 11.2.3跟踪测试用例 11.2.4维护测试用例 11.2.5测试用例的覆盖率 小结 思考题 第12章部署测试基础设施 12.1测试基础设施的重要性 12.1.1测试基础设施在不同阶段的作用 12.1.2测试基础设施影响研发效能 12.1.3测试基础设施保障运维 12.2测试基础设施要素 12.2.1硬件资源 12.2.2网络资源 12.2.3软件资源 12.2.4数据资源 12.3虚拟化技术的应用 12.3.1虚拟机技术 12.3.2QEMUKVM虚拟机解决方案 12.3.3容器技术与Docker 12.3.4集群管理与Kubernetes 12.3.5服务虚拟化及其工具 12.4测试基础设施的自动部署 12.4.1基础设施即代码 12.4.2基础架构的自动部署 12.4.3应用程序容器化及集群部署 12.4.4应用程序的自动配置 12.4.5CI/CD流水线 小结 思考题 实验8Jenkins+Docker实现Java应用的持续构建 第13章测试执行与结果评估、报告 13.1软件测试执行与跟踪 13.1.1测试执行过程的要点 13.1.2测试项目进度的管理方法 13.1.3测试过程管理工具 13.2软件缺陷的描述 13.2.1软件缺陷的生命周期 13.2.2严重性和优先级 13.2.3缺陷的其他属性 13.2.4完整的缺陷信息 13.2.5缺陷描述的基本要求 13.2.6缺陷报告示例 13.3软件缺陷跟踪和分析 13.3.1软件缺陷处理技巧 13.3.2缺陷趋势分析 13.3.3缺陷分布分析 13.3.4缺陷跟踪方法 13.3.5软件缺陷跟踪系统 13.4产品质量评估与度量 13.4.1基于缺陷的质量度量 13.4.2经典的种子公式 13.4.3基于缺陷清除率的估算方法 13.4.4软件质量的度量 13.5测试的评估与报告 13.5.1测试过程的评估 13.5.2测试充分性的评估 13.5.3测试报告 小结 思考题 实验9安装和使用缺陷跟踪系统MantisBT 实验10基于MeterSphere的综合实验 第14章软件测试展望 14.1大数据的测试 14.1.1大数据的特性与挑战 14.1.2大数据的测试方法 14.1.3大数据的测试实践 14.1.4大数据的测试工具 14.2AI系统的测试 14.2.1AI系统的不确定性和不可解释性 14.2.2AI系统的白盒测试 14.2.3AI系统的算法验证 14.2.4示例: 针对智能语音的设计与执行 14.3AI助力软件测试 14.3.1基于图像识别技术的UI测试 14.3.2基于AI的、全自动化的API测试 14.3.3AI助力代码深度分析 14.3.4AI驱动测试 14.3.5AI测试工具 14.4软件测试工具的未来 14.4.1软件测试工具的发展趋势 14.4.2Codeless测试自动化 14.5彻底实现持续测试 14.5.1重新理解持续测试 14.5.2持续测试实现框架 14.5.3持续测试成熟度模型 14.5.4彻底的持续测试 14.6软件测试发展趋势 14.6.1MBT的应用前景 14.6.2软件测试七大趋势 小结 附录 参考文献