作品简介

本书尽量用生活化的场景来描述编程场景,避免正确但是晦涩的表达,避免直接抛出结论,而是用实战项目来演示软件开发和测试的思路,用简单可行的思路引导读者去一步步尝试和验证,最终得到可以理解的结果。

徐西宁,毕业于华中科技大学计算机学院,资深全栈软件工程师,从事软件开发和测试工作15年,先后任职于Autodesk、EMC、每锐软件等公司,在自动化测试框架设计、自动化测试流程优化、持续集成、Web开发等方面有丰富的经验,是一位活跃的开源软件和技术分享实践者。

作品目录

  • 序一
  • 序二
  • 前言
  • 第1章 软件测试基础
  • 1.1 什么是软件测试
  • 1.2 软件测试的类型
  • 1.3 敏捷开发模式
  • 1.4 测试经济学
  • 1.5 自动化测试不容易
  • 1.6 本章小结
  • 第2章 Python入门
  • 2.1 世界上最好的两种编程语言
  • 2.2 别问我怎么安装
  • 2.3 解释器是什么
  • 2.4 初识变量
  • 2.5 函数基础
  • 2.6 代码缩进和代码块
  • 2.7 字符串
  • 2.8 数值类型
  • 2.9 布尔值和条件判断
  • 2.10 日期和时间
  • 2.11 list基础
  • 2.12 dict基础
  • 2.13 循环
  • 2.14 异常
  • 2.15 断言
  • 2.16 pip的基础用法
  • 2.17 本章小结
  • 第3章 PyTest入门
  • 3.1 框架是什么
  • 3.2 测试框架
  • 3.3 PyTest是什么
  • 3.4 自动发现
  • 3.5 使用断言
  • 3.6 测试结果解读
  • 3.7 测试报告
  • 3.8 本章小结
  • 第4章 Selenium入门
  • 4.1 Selenium是什么
  • 4.2 Selenium的安装配置
  • 4.3 用Web Driver驱动网页
  • 4.4 页面元素的定位
  • 4.5 页面元素的常见操作
  • 4.6 本章小结
  • 第5章 实战12306之入门篇
  • 5.1 测试用例设计文档
  • 5.2 代码实战
  • 5.3 代码解析
  • 5.4 本章小结
  • 第6章 Python进阶
  • 6.1 基本数据类型的深入了解
  • 6.2 深入了解函数
  • 6.3 关于时间
  • 6.4 面向对象基础
  • 6.5 模块是什么
  • 6.6 高级排序
  • 6.7 复杂的遍历场景
  • 6.8 文件和文件系统操作基础
  • 6.9 浅拷贝与深拷贝
  • 6.10 深入了解import
  • 6.11 变量的作用域
  • 6.12 局部变量和全局变量的冲突
  • 6.13 __name__和__main__
  • 6.14 注释
  • 6.15 pip的工程用法
  • 6.16 本章小结
  • 第7章 PyTest进阶
  • 7.1 自动发现测试类
  • 7.2 测试集合
  • 7.3 标记
  • 7.4 参数化测试
  • 7.5 测试用例的ID
  • 7.6 Fixture初探
  • 7.7 PyTest的插件机制
  • 7.8 本章小结
  • 第8章 Selenium进阶
  • 8.1 页面元素的XPath定位
  • 8.2 页面元素的等待
  • 8.3 Selenium的局限
  • 8.4 本章小结
  • 第9章 实战12306之进阶篇
  • 9.1 PO设计模式
  • 9.2 更有针对性的显式等待
  • 9.3 更健壮的代码逻辑
  • 9.4 函数单一职责原则
  • 9.5 测试单一职责原则
  • 9.6 本章小结
  • 第10章 Python高阶
  • 10.1 面向对象设计思想
  • 10.2 对类的深入了解
  • 10.3 重写
  • 10.4 深入了解函数
  • 10.5 None是什么
  • 10.6 Enum是什么
  • 10.7 Python不支持常量
  • 10.8 随机数据和时间戳
  • 10.9 自定义异常类型
  • 10.10 需要用强类型吗
  • 10.11 日志
  • 10.12 本章小结
  • 第11章 测试框架的设计和演进
  • 11.1 代码的可读性
  • 11.2 友好的函数设计
  • 11.3 有效管理测试资源
  • 11.4 不要引入getter和setter
  • 11.5 一次收集多个断言错误
  • 11.6 日志的支持和改进
  • 11.7 减少重复执行的负面影响
  • 11.8 数据驱动测试的设计
  • 11.9 接受一定程度的重复代码
  • 11.10 本章小结
  • 第12章 实战12306之高阶篇
  • 12.1 就近原则
  • 12.2 用Enum澄清设计意图
  • 12.3 支持链式表达
  • 12.4 简化函数名
  • 12.5 封装复杂逻辑
  • 12.6 单例设计模式
  • 12.7 异常和断言的使用场景的区别
  • 12.8 测试用例的维护
  • 12.9 本章小结
  • 术语表
  • 后记
展开全部