初级软件测试

作为一个刚刚入门的软件测试人员,我认为软件测试的门槛虽然比较低,但是想要进阶成为高级测试人员也是需要时间、经验、技术的累积。如今基于点点点的手工测试已经趋于饱和,很多测试人员也是急于跳脱目前的舒适圈,转而学习自动化测试来寻求更好的发展。软件测试跟开发一样,有初级测试,中级测试,高级测试。任何职业发展都是一个循序渐进的过程,要想在软件测试行业站稳脚跟,就得脚踏实地地从手工测试开始。当然,测试是跟程序打交道,所以了解一两门开发语言,了解项目开发流程是前提。我认为初级软件测试学习是整个测试阶段最重要的部分,是打地基的过程,从手工测试开始,需要掌握到的是设计测试用例的方法,除此之外掌握一些测试工具也是必要的。

1.测试用例编写

1.1 设计测试用例的依据

根据需求文档,项目设计文档,接口文档,系统使用手册等来设计测试用例。 重点是要理清项目的流程,核心模块,实现的主要功能。 还应该在开发过程与测试过程之间建立起一对一的联系。 一般的软件测试生命周期: 需求分析-用例设计-脚本开发-测试执行-结果分析 但在实际测试过程中,会根据项目的周期来调整测试的时间。

1.2最常接触的基础测试类别

1.2.1模块测试

  • 模块测试的目的是发现程序模块与其接口规格说明之间的不一。

1.2.2功能测试

  • 功能测试的目的是为了证明程序未能符合其外部规格说明。

1.2.3系统测试

  • 系统测试的目的是为了证明软件产品与其初始目标不一致。

1.2.4敏捷测试

  • 敏捷测试:敏捷测试是遵循敏捷宣言的一种测试实践: ①强调从客户的角度,即从使用系统的用户角度,来测试系统。 ②重点关注持续迭代地测试新开发的功能,而不再强调传统测试过程中严格的测试阶段。 ③建议尽早开始测试,一旦系统某个层面可测,比如提供了模块功能,就要开始模块层面的单元测试,同时随着测试深入,持续进行回归测试保证之前测试过内容的正确性。

当然还有一些细分的测试类别:
1、功能测试:确保程序的目标功能实现。
2、容量测试: 发现处理大容量数据时的程序异常 。
3、强度测试: 发现在大规模负载、高强度不间断持续的数据处理中的异常。
4、可用性测试: 评估最终用户在使用软件并与软件交互时的可用性问题。
5、安全性测试: 试图攻破程序的安全防线。
6、性能测试: 评估程序的响应时间以及吞吐量瓶颈。
7、存储测试: 确保程序可以正确处理其对存储的需求,包括系统的存储和物理上的存储。
8、配置测试: 检查程序是否能在推荐配置上流畅运行。
9、兼容性/转换测试: 评估新版本是否能兼容老的版本。
10、安装测试: 确保能够在所有支持的平台上安装软件。
11、可靠性测试: 评估程序能否达到规格说明中的运行时长和MTBF(平均故障间隔时间)要求。
12、可恢复性测试: 测试系统恢复相关的功能是否按设计要求实现。
13、服务/可维护性测试: 评估系统是否拥有良好的数据处理和日志机制,以备技术支持和调试之需。
14、文档测试: 检验所有的用户文档是否准确。
15、过程测试:确保接口的流通性

1.3测试用例设计方法

1.3.1功能测试用例设计 针对系统或模块常用的两大设计方法

  • 基于用户场景
  • 基于功能点 一般用户场景和功能点设计是结合使用的。 其中针对每个功能或者模块设计时还要结合使用黑盒测试的方法:
    -- 等价类划分
    --边界值分析(五点法,七点法)
    --因果图分析(输入条件组合对功能有影响的情况)
    --错误推测法

在设计测试用例时要保证测试用例的覆盖率和简洁高效。 测试用例不是越多越好。 能发现缺陷的用例才是好用例! 1.3.2接口测试用例设计 通常,设计接口测试用例需要考虑以下几个方面:

  • 是否满足前提条件

有些接口需要满足前置条件,才可成功获取数据。常见的,需要登陆Token。

逆向用例:

针对是否满足前置条件(假设为n个条件),设计0~n条用例

  • 是否携带默认值参数

正向用例:

带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其它不填写,设计1条用例;

  • 业务规则、功能需求

这里根据实际情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例

  • 参数是否必填
    正向用例:
    设计1条只传必填参数的测试用例。
    设计1条必填参数、可选参数都传的测试用例。

逆向用例:

针对每个必填参数,都设计1条参数值为空的逆向用例

  • 参数之间是否存在关联

有些参数彼此之间存在相互制约的关系

逆向用例:

根据实际情况,可能需要设计0~n条用例

  • 参数数据类型限制

逆向用例: 针对每个参数都设计1条参数值类型不符的逆向用例

  • 参数数据类型自身的数据范围值限制

正向用例:

针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例

逆向用例:

针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例

针对每个参数(假设n个),设计n条每个参数的参数值都小于数据范围最小值的逆向用例
总结 :以上几个方面考虑全的话,基本可以做到如下几个方面的覆盖:

主流程测试用例:正常的主流程功能校验;

分支流测试用例:正常的分支流功能校验;

异常流测试用例:异常容错校验。

具体设计方法还是根据接口文档具体分析,适当地减少冗余测试用例,但也要做到全面,尽可能覆盖后台的逻辑代码。 设计web接口测试用例就是模拟不同的参数去覆盖更多的代码逻辑,尽量把web接口的每一种返回结果都测到。 重点是理解接口测试概念,接口的请求协议http,https,请求方法get,put等,响应状态码,请求/返回数据格式:xml,json等。

2.测试工具

2.1 excel测试用例表格写测试用例
2.2 postman接口测试工具

测试写好的每一条接口测试用例,分析返回结果。 只能一条一条写接口请求,不过还是比较常用和方便的。

2.3 chrome浏览器的开发者工具f12打开。

常用到的工具栏elements,console,sources,network(最常用)。 一般要观察network的XHR(前端写的请求),可以定位前后端报错具体是前端报错还后端报错。 XHR的每一条请求要看请求信息,响应信息,timing(Waiting(TTFB),Content Download:性能方面) elements:styles样式栏可以调页面样式,UI测试可能会用到。

2.4 java的junit测试框架

目前接口自动化是最容易实现和维护的,所以初级阶段也要掌握一种测试框架实现接口测试的自动化。 java软件推荐:IDEA(智能提示比eclipse好)

2.5 git和github代码管理工具

写测试脚本时可以通过git进行本地代码管理,不需要联网,便于修改,维护,合并,同步,也可以上传到github上进行代码托管,但免费上传的是公开的,可以被人查看和下载,付费的才是私密的,不允许被外人查看。

2.6 tower文档管理

项目管理,文档管理,任务发布等,是一个在线的办公协作工具。

2.7其他测试工具

以下推荐的工具是目前测试人员常用的主流工具,初级一般用不到几个,中高级用的多。
接口测试工具:HttpRequester,postman等。
接口自动化测试工具:JMeter,Robot Framework,soapUI等。
接口性能测试工具:主要是用于测试接口的性能测试,验证接口处理并发的能力,如JMeter,LoadRunner,soapUI等工具。
UI自动化测试:selenium,Katalon Recorder(可以录制界面脚本)。
QTP是一个侧重于功能的回归自动化测试工具。
抓包工具:Fiddler,wireshark(比较专业) Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。常用来抓app包。

3、数据库

了解数据库是必要的,测试过程中会进行数据库校验,看数据有没有写入或更改,这时候就要用到数据库的数据操作:增删改查等。 数据库软件推荐:DataGrip