软件测试开发知识笔记

目录

  1. 一、测试开发与用户需求
  2. 二、软件开发生命周期与开发模型
  3. 三、BUG管理与评审
  4. 四、测试用例设计方法
  5. 五、测试方法与技术
  6. 六、测试分类
  7. 七、测试方法详解(白/黑/灰盒)
  8. 八、测试阶段分类
  9. 九、自动化测试基础
  10. 十、自动化测试常用操作
  11. 十一、弹窗与等待机制
  12. 十二、浏览器导航与文件上传
  13. 十三、面试常见问题

一、测试开发与用户需求

  • 测试开发:核心在于验证软件特性是否满足用户需求。
  • 用户需求:未经合理评估的需求不能作为开发和测试的依据。
  • 软件需求:是开发与测试人员执行工作的基础。

二、软件开发生命周期与开发模型

1. 软件开发生命周期 (通用流程)

需求分析计划设计编码测试运行维护

2. 常见开发模型

  • 瀑布模型 (适用于固定需求的小项目)
    • 每个流程只执行一次,线性推进。
    • 缺点:产品周期长,用户难以及时体验。
  • 螺旋模型 (适用于规模大、复杂度高、风险大的项目)
    • 每阶段引入风险分析。
    • 缺点:需额外风险分析人才。
  • 增量模型 / 迭代模型 (适用于大型项目)
    • 大需求拆分为小需求,逐步上线。
  • 敏捷模型
    • 典型代表:Scrum(结合增量与迭代)
    • 三大角色:产品经理、项目经理、研发团队
    • 五个重要会议:需求发布、计划发布、每日会议、演示会议、回顾会议

三、BUG管理与评审

1. BUG基本要素

  • 问题出现的版本、环境、步骤
  • 预期结果 vs 实际结果

2. BUG定义

  • 不符合项目文档实现即为 BUG。

3. BUG级别与修复顺序

  • 修复顺序:崩溃 > 严重 > 一般 > 次要
  • 作用:BUG 级别用于评估开发能力、影响年终奖。

4. 遇到争执时的建议

  1. 先自查 BUG 描述是否清楚。
  2. 站在用户角度考虑问题。
  3. BUG 定级需有理有据。
  4. 提升自身技术和业务能力,提出问题并给出解决方案。

5. BUG评审人员

  • 测试代表
  • 开发代表
  • 产品代表

四、测试用例设计方法

1. 思维模式

  • 常规思维
  • 逆向思维
  • 发散型思维
  • 注:笔试常用 Excel 表格,面试常用思维导图。

2. 万能测试用例公式

  • 功能测试:验证功能是否正常
  • 界面测试:大小、形状、颜色、材质
  • 性能测试:反应速度与效率
  • 兼容性测试:不同平台、版本
  • 易用性测试:用户操作便利性
  • 安全性测试:私密性,如 SQL 注入、越权
  • 弱网测试:覆盖各种网络场景(工具:Fiddler/Charles 控制网速)
  • 安装与卸载测试:多种安装/卸载场景
  • 软件更新测试

五、测试方法与技术

1. 测试用例设计技术

  • 等价类:少量用例覆盖广泛场景(有效/无效等价类均需测试)。
  • 边界值分析:关注边界及次边界值。
  • 场景法:模拟多个事件流(基本流、备用流)。
  • 正交表法:减少用例数量,保证覆盖面(如 L4 正交表)。
  • 判定表
  • 错误猜测法

2. 接口测试

  • 核心:请求与响应
  • 常用工具:Postman

六、测试分类

  • 界面测试:所有可见元素
  • 功能测试:功能点验证
  • 性能测试:响应速度
  • 可靠性测试:非正常/正常运行时间比
  • 安全测试
  • 易用性测试
  • 静态测试:代码、界面或文档静态检查(如 SonarQube)
  • 动态测试:运行程序、输入数据、检查输出

七、测试方法详解(白/黑/灰盒)

类型 描述 方法/覆盖 优缺点
白盒测试 分析程序内部结构,单元测试,可见代码 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖 深入代码逻辑
黑盒测试 只关注功能,不看代码 等价类、边界值、因果法、场景法、错误猜测法 :贴合用户视角 :无法覆盖所有代码
灰盒测试 介于白盒与黑盒之间 常用于集成测试 /

八、测试阶段分类

1. 按阶段划分

  • 单元测试:最小功能单元(方法、函数)
  • 集成测试
  • 系统测试:由测试人员执行
  • 冒烟测试:验证程序可测试性
  • 回归测试:循环验证
  • 验收测试:交付前测试

2. 按测试方式

  • 手动测试
  • 自动化测试

3. 按实施组织

  • α测试 (Alpha):内测,公司内部人员(非开发与测试人员)
  • β测试 (Beta):公测,正式用户部分参与

九、自动化测试基础

  • 目的:提升测试质量与效率
  • 应用场景:回归测试、新旧版本对比
  • 自动化测试分类
    • 浏览器自动化
    • Web 前端自动化
    • 后端接口自动化
    • 终端软件自动化
  • 分层模型
    • UI 接口测试(顶层)
    • API / 集成 / 组件测试
    • 单元测试(底层,投资回报率最高)

十、自动化测试常用操作

1. 元素查找

  • find_element(方式, "元素"):查找单个元素
  • find_elements(方式, "元素"):查找多个元素
  • 支持方式cssSelectorxpath
    • xpath 示例://*(所有页面元素)、//*[@id="..."](匹配指定id)

2. 元素操作

  • 模拟键盘输入:send_keys("内容")
  • 清空内容:clear()
  • 获取文本信息:text
  • 获取属性值:get_attribute(属性)

3. 页面信息

  • 页面标题:title
  • 获取 URL:current_url

4. 窗口操作

  • 获取当前句柄:current_window_handle
  • 获取全部句柄:window_handles
  • 切换窗口:switch_to.window()
  • 最大化/最小化/全屏:maximize_window(), minimize_window(), fullscreen_window()
  • 设置窗口大小:set_window_size(长,宽)

5. 屏幕截图

  • 保存截图:save_screenshot('路径+名称')

  • 动态命名示例

    python 复制代码
    filename = "autotext" + datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S') + '.png'

6. 关闭与退出

  • 关闭窗口:close()
  • 退出浏览器:quit()

十一、弹窗与等待机制

1. 弹窗处理

  • 场景:页面无法查找元素时,需先处理弹窗。
  • 类型:警告弹窗、确认弹窗、提示弹窗。
  • 操作
    • switchTo.alert
    • alert.accept()(确认)
    • alert.dismiss()(取消)
    • send_key()(输入内容)

2. 等待机制

  • 强制等待sleep()(不推荐,浪费时间)

  • 隐式等待implicitly_wait()(作用于所有脚本元素)

  • 显示等待

    python 复制代码
    WebDriverWait(driver, sec).until(EC.invisibility_of_element((By.XPATH, 查找元素)))
  • 注意:显示等待与隐式等待不要混用。

十二、浏览器导航与文件上传

1. 导航操作

  • 打开网址:get(网址)
  • 前进/后退/刷新:back(), forward(), refresh()

2. 浏览器参数设置

  • 无头模式add_argument("-headless") (默认有头)
  • 页面加载策略page_load_strategy='加载方式'
    • normal:默认,等待所有资源。
    • eager建议,主体部分准备好即可。
    • none:不阻塞 WebDriver。

十三、面试常见问题

Q1: 软件测试开发工程师 vs 测试工程师

  • 相同点:均为测试人员,负责保障产品质量。
  • 不同点
    • 测试开发侧重开发测试效率工具(如自动化、性能测试),不是业务开发。
    • 测试工具无法完全替代测试人员。

Q2: 为什么测试岗位需学习开发知识?

  • 测试人员需编写代码(自动化、性能测试、工具开发),了解开发框架。
  • 有助于提升测试质量,从代码层面发现问题。

Q3: 为什么选择测试而非开发?

  • 岗位要求、个人兴趣、职业规划。

Q4: 自动化测试能否取代人工测试?

  • 不能。自动化测试由测试人员编写,需定期维护和更新,不能完全保障系统可靠性。

Q5: 自动化测试能否大幅降低工作量?

  • 不能。测试工作不仅仅是执行测试,还包括设计、维护等环节。
相关推荐
中屹指纹浏览器2 小时前
2025 高并发 IP 指纹优化:基于腾讯云边缘计算的抗检测实现
服务器·网络·经验分享·笔记·媒体
LGL6030A2 小时前
Java学习历程21——集成框架与常用库函数
学习
冬夜戏雪3 小时前
【java学习】【12.10】【10/60】
学习
代码游侠3 小时前
应用——文件I/O操作代码
linux·运维·c语言·笔记·学习·算法
石像鬼₧魂石3 小时前
适合渗透测试学习的网络靶场
网络·学习
sealaugh323 小时前
AI(学习笔记第十五课)从langchain的v0.3到v1.0
人工智能·笔记·学习
不会代码的小猴3 小时前
C++的第十三天笔记
c++·笔记·算法
麦麦在写代码3 小时前
前端学习6(JS 1)
前端·javascript·学习
snowfoootball3 小时前
12.9八股面经案例学习
学习