第一章

1:软件相对硬件而言,他是一系列按照特定顺序组织的计算机数据和指令。

2:软件生命周期

*问题定义–需求分析–软件设计–软件开发–软件测试–软件维护–淘汰*

3:软件开发模型(五个)

*瀑布模型* :线性开发流程,阶段顺序进行,不灵活

****快速原型模型****:快速构建软件原型,以便收集反馈并迭代改进

****迭代模型****:通过多个迭代周期逐步开发软件,每个周期都包括完整的开发流程。

****螺旋模型****:结合迭代开发和风险分析,每次迭代都进行风险评估。

****敏捷模型****:以人为核心,强调适应性和灵活性,通过多种方法实现快速迭代和响应变化。

软件质量的定义:

  1. 满足需求规定
  2. 满足用户需求
  3. 满足用户隐式需求

软件缺陷:从产品内部看缺陷是产品开发或维护中的错误,毛病等各种问题,从产品外部看缺陷是系统运行中某种功能失效或违背。

软件缺陷处理流程

  1. 提交
  2. 分配
  3. 确认
  4. 拒绝/延期
  5. 处理
  6. 复测
  7. 关闭

常见缺陷管理工具

1. *Bugzilla*

2. *禅道*

3. *Jira*

软件测试的定义

软件测试是使用人工或自动手段运行或测定某个系统的过程,其目的在于检验他是否满足规定的需求,或是弄清楚预期结果与实际结果之间的差异。

测试阶段分类

  1. 单元测试
  2. 冒烟测试
  3. 集成测试
  4. 系统测试与验收测试

按照测试技术分类

1. ****黑盒测试:****把软件当作一个有输入输出的盒子,他把程序当做成一个输入域到输出域的映射。只要输入数据能得到预期结果即可,不必关心程序内部是怎样实现的。

2. ****白盒测试****:白盒测试就是把软件当作成一个透明的盒子,测试人员清楚的知道从输入到输出的每一个过程。

常见的软件测试模型(四个)

1. ****V模型****:

· 1.是一种基本的测试模型,将开发过程与测试活动紧密结合。

· 2.每个开发阶段(如需求、设计、编码)都对应一个测试阶段(如需求分析、设计评审、单元测试)。

· 3.强调在开发的同时进行测试计划和设计。

2. *W模型*

· 1.W模型是V模型的变体,它允许并行开发和测试。

· 2.它将测试活动分布在各个开发阶段,强调测试可以独立于开发进行。

· 3.支持迭代和增量开发。

3. *H模型*

· 1.H模型强调测试可以在整个开发周期中持续进行,不依赖于开发阶段。

· 2.它将测试视为一个独立的流程,可以与开发并行,也可以根据需要随时启动。

· 3.适合敏捷开发,因为它允许快速反馈和持续集成。

4. *X模型*

·1. X模型是一种极端的敏捷测试模型,它将测试作为软件开发的核心。

2.它提倡在编写代码之前进行测试,即测试驱动开发(TDD)。

3.强调测试先行,开发和测试紧密结合,以快速响应变化。

软件测试原则

  1. 测试应基于客户需求。
  2. 测试要趁早进行。
  3. 穷尽测试是不可能。
  4. 遵循GoodEnough原则。
  5. 测试缺陷要符合二八定理。
  6. 避免缺陷免疫。

软件测试的基本流程。

  1. 分析测试需求
  2. 指定测试计划
  3. 设计测试用例
  4. 执行测试计划
  5. 编写测试报告

第四章

****性能测试的定义****:软件性能测试是一种验证软件应用在不同工作负载下性能指标是否满足预期目标的测试活动。它旨在评估软件应用在实际运行条件下多方面的性能表现

*性能测试指标:*

  1. 响应时间
  2. 吞吐量
  3. 并发用户数
  4. TPS
  5. 点击率
  6. 资源利用率

*性能测试种类。*

  1. 负载测试
  2. 压力测试
  3. 并发测试
  4. 配置测试
  5. 可靠性测试
  6. 容量测试

*性能测试流程*

  1. 分析测试性能需求
  2. 指定性能测试计划
  3. 设计性能测试用例
  4. 编写性能测试脚本
  5. 测试执行及监控
  6. 运行结果分析
  7. 提交性能测试报告

常见性能测试工具

1. *Load Runner;*

2. *VuGen;*

3. *Controller;*

4. *Analysis*

5. *JMeter*

*第五章-安全测试*

****安全测试:以发现隐患为目标(****普通测试以发现bug为目标)。

****安全测试的基本原则****为

  1. 培养正确的思维模式
  2. 尽早测试和经常测试
  3. 选择正确的测试工具
  4. 可能情况下使用源代码
  5. 测试结果文档化

常见的安全漏洞

1. *SQL注入*

: 恶意将SQL命令人为输入到url,表格,sql查询语句的输入参数中,欺骗服务器执行恶意SQL命令(****应用层****)

2. *XSS跨站脚本攻击*

将恶意代码注入网站

Hacker非法获取用户的Cookie和Session后伪装成用户与真正的网站会话,从事非法活动。

3. *CSRF攻击*

跨站请求伪造。

用户访问信任网站时,在没有退出会话的情况下攻击者会诱使用户点击恶意网站,恶意网站会返回攻击代码同时要求信任网站,这样就将恶意网站的代码发送到信任网站。

渗透测试:模拟hacker攻击,来评估计算机网络系统安全性能。

渗透测试流程

  1. 明确目标
  2. 收集信息、
  3. 扫描漏洞
  4. 验证漏洞
  5. 分析信息
  6. 渗透攻击
  7. 整理信息
  8. 编写测试报告

常见安全测试工具

1. *web漏洞扫描工具-AppScan*

2. *端口扫描工具–Namp*

3. *抓包工具–Fidder*

4. *W**eb渗透测试工具–Metaspolit*

*第6章*

什么是自动化测试:把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些,测试工具或框架,编写自动化测试脚本来模拟手工测试的过程。

*引入自动化测试须满足的条件。*

1. *项目需求变动不频繁*

2. *项目周期足够长(半个月以上)*

3. *自动化脚本可重复使用*

自动化测试的基本流程

  1. 分析测试需求
  2. 制定测试计划
  3. 设计测试用例
  4. 搭建测试啊环境
  5. 编写执行测试脚本
  6. 分析测试结果,记录测试问题
  7. 跟踪测试Bug

*自动化测试实施策略*

1. *单元测试(白盒)*

2. *接口测试(黑盒白盒结合)*

3. *UI测试*

*单元测试自动化占比最高其次是接口和UI.*

自动化测试的优势:

  1. 一致性,重复性,准确度可靠程度更高。测试更客观。
  2. 任务自动化解放人力。
  3. 自动执行高复杂度的测试情景
  4. 可以完成人工无法做到的测试,如负载测试,压力测试。
  5. 软件版本更迭后需要进行的回归测试,自动化测试有助于创建持续集成环境,用新构建的测试环境进行自动化测试。

劣势:

  1. 相对手工测试,对测试人员要求更高
  2. 无法百分百覆盖,不能完全代替人工测试找到Bug
  3. 开发自动化测试脚本的时间成本较大,没有试错机会应对资源浪费
  4. 产品迭代,需要更新脚本。时间成本
  5. 提高效率的同时,不能保证有测试效性。

*自动化测试常见技术*

1. *录制与回放测试*

2. *脚本测试*

3. *数据驱动测试*

*常用的自动化测试工具*

1. *Selenium*

2. *Katalon Studio*

3. *UFT*

****持续集成测试:目的是增强软件版本的发布规律和可靠性****。

​ 第七章

移动App测试概述:

移动app是针对手机平板电脑等移动设备连接到互联网的业务或无线网卡业务而开发的应用程序。

移动app特性:

移动App是专门运行在手机,平板电脑等移动设备上的软件,如闹钟,日历,微信,微博。与传统pc软件相比,移动app具有以下特性:

  1. 设备多样性
  2. 网络多样性
  3. 平台多样性

*移动app测试与与传统软件测试的区别*

1. *页面布局不同*

2. *使用场合不同*

3. *输入方法不同*

4. *操作方式不同*

移动app测试要点:

  1. ui测试 : 界面布局,图形测试,内容测试。
  2. 功能测试:切换测试,推送测试。

3. *专项测试:安装测试,卸载测试,升级测试,交互性测试,弱网测试,耗电量测试*

*性能测试*

1. *边界测试*

2. *压力测试*

3. *响应能力测试*

4. *耗能测试*

移动app测试流程

  1. 接受测试版本
  2. App版本测试
  3. UI测试
  4. 功能测试
  5. 专项测试
  6. 正式环境测试
  7. 上线准备

*移动App测试工具*

1. *Appium*

2. *UI Automator*

3. *Monkey*