/Software-Testing

软件测试的学习笔记总结,包括了UI自动化和接口自动化测试!更新速度比较慢,请见谅~~~~

Auto-Testing

自动化测试,包括了UI自动化和接口自动化测试!

仓库参考书籍和资源:
1.《测试之美》
2.《软件测试的艺术》
3.《软件测试常用技术与实用模版》 李龙、黎连业
4.《软件测试教程》贺平
5.《敏捷软件测试:测试人员与敏捷团队的实践指南》
6.《深入敏捷测试 整个敏捷团队的学习之旅》

什么是软件测试?

测试(Test)就是为检测特定的目标是否符合标准而采用专用的工具或者方法进行验证,并最终得出特定的结果。

软件测试(Software Testing):在有限的时间内提高软件质量的保证,是软件开发过程中重要的部分。

软件测试的目的

  • 测试并不仅是为了找出错误,而且要通过分析错误产生的原因和错误的发生趋势,帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
  • 需要测试工程师设计出具有针对性的测试方法,以改善测试的有效性。
  • 没有发现错误的测试也是有价值的,完整的测试是评估软件质量的一种方法。

综上总结:软件测试目的是尽可能早的发现软件中存在的陷并提高软件质量

软件测试的工作流程

软件测试的过程

测试设计阶段

1.制定计划

  • 主要工作:
    • 对需求规格说明书的仔细研究
    • 将要测试的产品分解成可独立测试的单元
    • 为每一个测试单元确定采用的测试技术
    • 为测试的下一个阶段及其活动制定计划
  • 制定计划包括两个部分:
    • 概要测试计划
    • 详细测试计划

2.测试用例

测试大纲是软件测试的依据,包括测试项目测试步骤测试完成的标准

  • 测试大纲的本质 从测试的角度对被测对象的功能和各种特性的细化和展开。

  • 测试大纲的好处

    • 保证测试功能不被遗漏,也不被重复测试
    • 合理安排测试人员
    • 使得软件测试不依赖个人

3.软件测试的报告

软件测试报告是软件测试过程中最重要的文档,包括如下内容:

  • 记录问题发生的环境
  • 记录问题的再现步骤
  • 记录问题性质的说明
  • 记录问题的处理进程
    • 问题处理进程从一定角度上反映测试的进程和被测软件的质量状况以及改善过程。

测试执行阶段

软件测试执行过程的三个阶段

  • 初测期

    • 测试主要的功能和关键的执行路径,排除主要的障碍。
  • 细测期

    • 依据测试计划和测试大纲、测试用例,逐一测试功能、特性、性能、用户界面、兼容性、可用性等。
    • 预期可发现大量不同的性质、不同严重程度的错误和问题。
  • 回归测试期

    • 系统已达到稳定,在一轮测试中发现的错误已十分有限;复查已知错误的纠正情况,确认未引发任何新的错误时,终结回归测试。

2.集成测试过程中的两个重要部分

在集成测试过程中的两个重要部分是功能冻结代码冻结的确定。这两个部分界定出回归测试期的起止界限。

  • 功能冻结(Function/Feature Freeze)
    • 经过测试,符合设计要求,确认系统功能和其他特性均不再做任何改变。
  • 代码冻结(Code Freeze)
    • 理论上,在无错误时冻结程序代码,但实际上,代码冻结只标志系统的当前版本的质量已达到预期的要求,冻结程序的源代码,不再对其做任何修改。这个里程碑是设置在软件通过最终回归测试之后。

软件测试的模型

软件测试根据不同的测试对象以及测试项目的背景可采用不同的测试模型实施测试活动。

软件测试模型有:V模型、W模型、H模型、X模型、敏捷测试等。

V模型 --- 主要应用在快速的软件开发

  • V模型中的过程从左到右,描述了基本的开发 过程和测试行为。
  • V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
  • 局限性:
    • 把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现.
    • 容易使人理解主要是针对程序进行测试寻找错误

W模型 --- 主要应用在一些中型软件并且业务逻辑关联紧密的项目中

  • V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试” 的原则。
  • 在V模型中增加软件各开发阶段应同步进行的测试,演化为W 模型 。
  • 开发是“V”,测试是与此并行的“V”。
  • 相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。

W模型也有局限性。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整

H模型

H模型中, 软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。

软件测试可以尽早进行,并且可以根据被测物的不同分层次进行

X模型

很好地处理测试与开发的交接过程(交接的过程是一个时间段,而不是一个点)

左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序,然后再对这些可执行程序进行测试。

己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。

X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,给有经验的测试人员在测试计划之外发现更多的软件缺陷。

软件测试的理念

尽早测试

  • 测试人员尽早参与软件项目,及时开展测试的准备工作,包括编写测试用计划、制定测试方案、测试用例。

  • 尽早地开展测试执行工作,一旦代码模块完成就应该开展单元测试,代码模块被集成为相对独立的子系统,就开展集成测试,一旦有了Build提交,便可以开展系统测试工作。

全面测试

  • 对软件的所有产品进行全面的测试,包括需求、设计文档、代码、用户文档。
  • 软件开发及测试人员全面参与到测试工作中,如对需求的验证和确认。

全过程测试

  • 测试人员要充分关注开发过程。
  • 测试人员要对测试的全过程进行全程的跟踪。

独立的、迭代的测试

  • 只要测试条件成熟,测试准备活动完成,测试的执行活动就可以开展。

专业的测试部门完成

  • 程序员应该避免测试自己的程序。

测试计划

  • 制订严格的测试计划,安排足够的测试时间

修改有记录

测试用例(Test Case)

指对一项特定的软件产品测试任务的描述,体现测试方案、测试方法、测试策略和技术

1.测试用例的重要性

  • 避免程序遗漏
  • 测试进度的把控
  • 一个度量指标
  • 分析缺陷的依据
  • 项目的管理成本

2.测试用例的写作思路

编写测试用例需要遵守5C原则(Correct准确、Clear清晰、Concise简洁、Complete完整、Consistent一致)

大多数的测试用例包括:

  • 用例编号

    • 测试用例的唯一标识,主要用来识别测试用例的目的。
    • 用例编号需要具有指引性和维护性,格式一般由字母、数字、下划线组成。
  • 所属模块

    • 为了更好识别以及维护用例。
  • 用例标题

    • 简洁明了的一句话来描述测试用例的关注点,原则上测试标题也具有唯一性。
  • 用例优先级

    • 一般划分为三个级别:高、中、低。
    • 高优先级别用例是指软件的核心业务、基本功能、重要特性以及使用频率比较高的部分。
  • 前提条件

    • 指测试用例在执行前需要满足的一些的条件,否则测试用例无法执行。
    • 因果关系
  • 测试数据

  • 操作步骤

    • 执行测试用例的步骤描述,测试用例执行人员根据该操作步骤完成测试执行。
  • 预期结果

    • 用来判断被测对象是否正常。
    • 根据需求规格说明书来描述用户的期望。
  • 用例状态

    • 用例状态一般分三种:PASS通过、FAIL失败、N/A未执行

软件测试的流程

按照测试层次划分为四个层次:

软件测试的方法

一般按以下三种方式划分:

  • 按照执行阶段划分为:白盒测试黑盒测试、灰盒测试
  • 按照执行状态划分为:静态测试、动态测试
  • 按照执行行为划分为:手动测试、自动测试

软件测试的工具

配置管理工具 缺陷管理工具 性能测试工具 UI测试工具 接口测试工具 抓包工具 自动化测试工具
SVN Quality Center
JIRA
Mantis
- kylinpet
LoadRunner
Airtest Postman
Jmeter
fiddler
httpwatch
Wireshark
Charles
Appium - - - App UI自动化测试
移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台

Selenium - - - Web UI 自动化测试
Web应用程序测试的工具,Selenium测试直接运行在浏览器中。

Postman - - - 接口测试

Robot Framework - - - Web UI自动化测试,接口测试,APP测试

Jmeter - - - 接口测试,性能测试

Loadrunner - - - 性能测试
预测系统行为和性能的负载测试工具。

Monkey - - - App稳定性测试

Appscan - - - 安全性测试

Jenkins - - - 持续集成
自动化构建、编译、部署、任务执行、测试报告等。

常见的通信协议

OSI协议

TCP/IP协议

HTTP协议

超文本传输协议(Hyper Text Transfer Protocol,简称HTTP)

最广泛的一种网络协议,是一种属于应用层的面向对象的协议。

HTTPS协议

软件测试的基本素养