新人学习之接口测试学习

 

《后台搜索服务》接口学习书

适用范围  XX软件-大客户业务中心  作者  段旭   

一、项目概述

1.项目简介:

(1)内容:

此文是介绍接口测试是怎样进行的,结合后台搜索服务,从理论引申到实践的一个学习过程,其中包括介绍阶段性的学习与实践,内容并不具体详细,很多细节还是需要自己进行学习和探究,知识与经验是靠累积与沉淀才稳固牢靠。

(2)背景:

XX开发适配各种http接口给需要服务的CP提供相应的支持。

(3)意义:

议读此计划书,一共有3重意义:

第一,学习测试,认识软件测试过程,学习接口的测试,什么是接口,应该怎么正确的对待接口测试,保证接口的功能性,稳定性,健壮性,从而实现所提供接口的需求

第二,学会分析,学会理解需求,发散自己软件工程的逻辑思维

第三,提高自己的学习能力与工作经验,从而增加自己的人生价值

(4)测试团队

(1)测试经理:XXX

(2)组长:XXX

(3)Tester: XXX

二、学习目标、对象、策略与任务分析

1.目标分析:

2.对象分析:

(1)测试人员:

l  初次接触接口的测试人员,基本的测试能力要达到,接口测试为底层测试,不同于UI测试那么复杂多样化,它更多的是展现枯燥与无聊,所以需要更大的细心和耐心去慢慢融入其中,同时接口也不是那么简单易懂,它涵盖丰富的逻辑性去开阔初次接触它们的测试者,让初次接口的测试人员更快的融入接口测试中,进而的提高工作效率与工作积极性。

l  已经接触过接口测试人员,由于接口测试有比较大量的case去覆盖所实现的需求,并且软件工程的逻辑就是牵一脉动全身,所以大量的迭代测试也是必不可免的。这时候普通的黑盒测试已经满足不了我们对测试任务的效率,所以我们在开阔逻辑思维的同时需要完善自己的编码能力,简单的脚本语言就可以代替你复杂沉多的工作。

(2)管理者:认识接口测试流程,了解接口内容,熟悉测试人员任务与测试内容从而更有效的掌控测试过程。

 

3.接口学习策略分析:

此计划书本着运用问题情景教学策略,以问题为引导,将“面向对象”一步步带入接口测试的学习中与项目熟悉的认知中。在适当的运用自己的测试经验,让大家在思考中完成对接口测试的理解。

4.学习方法分析:

以下活动问题需要思考与分析:

提问1:接口测试主要讲究文档效益,需要对文档编写能力有一定要求,这样能让他人清楚明白的你要做什么?你想要做什么?例如测试case/计划如何写?需求理解中Q&A管理表的产生

提问2:掌握好整体项目的流程,哪些流程是需要测试参与?测试需要发起哪些流程?测试在项目中担任的角色是什么?

提问3: 如何理解接口测试?学习接口测试需要掌握哪些知识?接口测试需要怎么测试?怎么做好接口测试?它与UI测试的不同?

提问4:接口需要借助哪些工具?接口运用工具都需要做些什么?

提问5:接口需要使用到哪些脚本语言?它能代替人工做什么?

提问6:接口测试由于本身的逻辑性特质,所以接口测试中如何进行有效的沟通,如何有效的利用wiki工具或者BUG工具?

 

 

三、学习过程

1.学习活动过程概念图:

2.接口测试学习活动过程描述:

阶段1:

测试基础自主学习,参考前人写的测试文档,重点学习test plan中格式;人员分配;资源分配;时间控制;测试标准。重点学会对需求进行理解,如有不懂的地方多与项目经理/产品经理进行沟通讨论,多与同事进行讨论,编制相应的QA管理表,把疑问记录下来,方便日后维护和帮助其他同事进行需求理解。重点学习测试case的编写,把需求功能点转化成case进行覆盖,此过程也需要多与同事沟通,case编写完成要与相应人员进行审核,重点学习测试报告中的格式,测试报告中对测试结果的分析与结论是对整个测试的归纳。此步骤在下方四大节中有相应的项目模板,均是实际项目产生的文档可供大家参考

阶段2:

测试能力至关重要,但一个好的测试流程往往会规避很多资源浪费和沟通障碍,所有参与项目中的角色都要熟知流程,测试人员要重点理解自己在测试流程中的位置职责以达到最好的测试效果。

阶段3:

接口也就是我们通常说的API,一般以用于多系统间交互开发,接口分为程序内部接口,程序外部接口,内部接口的测试通常是进行白盒测试(测试通常是开发进行的),测试人员在这里所做的工作就是外部接口测试,接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。简化理解就是,我们要把编译好的数据通过HTTP的接口(web服务接口)形式传递交换给客户,从而支持客户需求的相应服务的产品。(我们主要测试HTTP接口)学习测试HTTP接口的前提只需要简单的了解http和https有什么区别?接口加密是什么?。

l  我们想要做好接口测试应该确保较早地与相关的部门协调好并确定进行外部接口测试的方案,因为不是所有的团队都可以在一个隔离的测试环境中进行测试工作的,因此使得对外部接口的测试显得困难。有时候只是人工的静态的审阅一次数据而并不真正的用这些数据来测试,等等这些都增加了实际测试执行中遇到的风险,但有些时候是可以避免的。

阶段4:

接口测试会使用到常识的浏览器,由于接口返回有XML/JOSN/JOSNP等格式,所以不同浏览器需要装不同的插件来访问对应的格式。浏览器只是测试接口的媒介,静态观察接口返回数据的正确性。

接口的性能需要借助性能测试工具,目前流行的两个都可以满足我们对接口性能测试的要求,这两个工具:loadrunner,jmeter。Loadrunner是收费软件,功能强大,最常用的是模拟任何用户场景与IP欺骗。Jmeter则是开源软件,简介易懂的界面,不需要安装就可使用,10几M的容量对比loadrunner显得很小乔灵活。这两款软件均可以对我们就接口的性能测试得到帮助,输出的APS,每秒点击量,每秒访问量都可以显示。足以满足对性能参数的支持。不过大部分时间我们的项目还是运用loadrunner,它有个非常强大的功能可以实时侦测服务器的性能,观察每个阶段并发数服务器的质量。同样第四节你可以找到相应的学习文档,PS:其实在接口需求中只是对接口性能做了限定,但是并没有就服务器软硬件参数给出合理的并发用户,所以这时需要涉及运维人员的帮助与协调,并且由于测试环境的限制,往往性能测试比较客观。无法真正的做到对线上环境性能测试。

阶段5:

目前我们使用的语言为python,此种脚本语言简单易懂,有很多丰富的类库供使用,也是高效快捷的一个脚本语言,我们使用此语言把黑盒case进行自动化处理,俗称的灰盒测试,把重复性较高的工作教给脚本来运行会大大节省我们的时间。附件有我们使用脚本对的接口测试

阶段6:

l  接口在刚开始接触不太好理解,复杂的逻辑性,没有UI体现那么直观的参数值,理解这些需要查阅大量文档的同时也需要积极与项目/产品经理进行沟通,他们是最先了解需求,创造需求的角色。积极,多问,多讨论,不仅是测试人的素养,也是互联网许多职业中的素养,由于目前互联网发达通讯工具很多,充分利用这些工具进行沟通,不要让他们限制,如果还达不到效果则采用电话,更甚face to face吧。

l  合理的利用好BUG管理工具(BUGjira,readmine,bugfree等),这样不仅能高效的记录产生问题,产生问题时间,还能在日后完善测试报告分析BUG走势等最好积淀,同时有记录了自己的工作产出,不要怕麻烦,清楚的记录,严谨的描述问题也是测试人必备的能力之一。

四、文档与工具参考(所有项目文档这里就不分享了。关注我会在博客中写这些基本的测试文档)

l  test plan

l  test case

l  测试脚本

Python所用到的脚本:

脚本所用的case:

l  测试报告

l  教学财富

Loadrunner PPT教学文档:

Jmeter PPT教学文档:

以上两个文档均是结合项目,从理论到实践的产出物,均由后台服务测试小组提供。

五、项目介绍

鉴于是介绍学习过程和方法,所以先发了测试过程中的文档参考,此节主要介绍后台服务哪些项目业务需要测试。

以上就是我们目前在做的测试项目,由于项目文档过多这里就一带而过,主要是学习接口的测试方法。以下是一些接口需求文档与技术文档的示例。

l  接口需求文档样式:

l  技术类的需求文档样式:

这些统称为产品说明书有些来自产品/项目经理,有些则来自客户或者直接邮件。测试人员都需要关注。

六、接口阶段学习表

整个过程总结于:

知识掌握—测试人员职责—善于思考勇于实践(功能测试)—性能测试—自动化测试—总结分析


活动


过程结果


第一阶段


基础自主学习:

一、测试基础书

二、测试论坛

三、学习文档中的重点

四、测试文档的书写:主要学习test case的书写

五、整体学习阶段感悟


知识掌握


掌握知识与相应的测试能力,标注的重点是需要着重学习


第二阶段


测试流程的掌握

一、熟知项目流程中每个人角色位置

二、熟悉测试流程中每个阶段测试人的职责

三、一定要按流程进行,如流程哪些疑问的地方需要及时提出自己的建议和意见


角色控制


让测试人慢慢培养团队协同能力,配合流程控制,减少项目成本和不必要的风险


第三阶段


接口学习与探究

一、学习HTTP协议,学习加密格式

二、理解什么是接口,接口的构成

三、对接口测试核心是什么?四、为什么要做接口测试呢?


思考实践


这个阶段不仅要学会有关接口方面的理论知识,多上网查询资料,还要结合项目需求和case进行实践,逐渐实习过程中就会理解怎么测试接口。


第四阶段


工具的使用:

一、学习性能测试工具

二、让工具更好的辅助自己做接口测试


测试工具


针对loadrunner/jmeter学习网上很多,咱们主要使用它们对接口进行测试,难度不大。掌握此软件中控件是做什么的即可,简单的会一些C语言就可自行编写测试脚本


第五阶段


拓展延伸:

一、掌握一门编程语言,不用太熟悉,掌握基础即可

二、勇于实践,代码嘛,一定要多写,在撰写代码过程中会遇到问题,也会锻炼自己分析思考的能力


自动化

测试


让测试人善于把经常跌点,繁多的case进行自动化处理,这样大大减少自己的工作量和节省时间,但在初期,代码熟悉起来可能比较慢,效果很差不要放弃。


第六阶段


沟通与总结:

一、需求理解阶段与项目/产品经理沟通

二、case书写阶段与项目组内成员沟通

三、测试阶段与测试同事沟通

四、遇到困难及时与测试经理沟通

五、学会总结


有效沟通


有效沟通能大大节省项目成本减少风险,还能让自己了解他人所想。学会总结,总结每个阶段的收获与不足。最好能发出周知让别人了解自己做了什么,还能进行问题备案。

七、总结评价

全篇学习书只是简述测试人对接口测试的学习方法,具体的测试和工作中经验是写不完的,大家可以参考文中的阶段在对应自己的项目逐渐适应于实践,自然会了解接口测试。

接口测试主要熟悉每个项目中接口的参数与参数值,了解它的构成,这样多方面的考虑怎么测试验证接口就更全面了。接口不仅要注重本身参数的正确性还要保证数据的正确性,看是否符合创建接口调用后的条件,每个参数会影响数据中的哪些参数都一一清楚。接口测试并没有想象中那么复杂,相反比UI测试简单的多。没有UI测试项多,但是由于是底层接口所以需要考虑的比UI更全面,接口的稳定性也是重中之重。

接口测试是一个缓慢过程,经常做UI测试的tester,初次接触测试接口起来可能会有疑问,上手需要了解业务,再了解接口,再了解测试,再做测试这个过程必不可少。但如果之前有执行的项目,可以借助项目中的case,先做测试,再做了解,这种方法不失为一个快速高效的测试捷径。

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

时间: 2024-08-11 07:38:46

新人学习之接口测试学习的相关文章

SoupUI接口测试学习分享【转】

SoupUI接口测试学习分享 一.SoapUI的使用 我们主要用SoapUI的REST 测试功能来测试我们协议接口.RESTful是一种服务端API的规范,每个资源对应唯一的URI,然后用HTTP的POST.GET.PUT.DELETE方法转换状态,也可以理解为增删改查.但是,不要在意这些细节,我们的接口主要用的是POST,所以在新建资源后,一般只需要建立一个POST方法. 1.运行SoapUI-Pro-5.1.2: bin--soapui-pro.bat,直接启动soapui; 注册码导入sc

我写了个项目,帮你学习HTTP接口测试!

端午节我写了一个项目,帮助你学习HTTP接口测试. GitHub地址: https://github.com/defnngj/learning-API-test 整个项目基于Flask和 Requests实现. Flask是Python主流的Web框架,以简单著称,它可非常方便的实现API,整个项目中的API都通过一个文件实现. Requests是模拟HTTP的测试库,同样是Python语言的明星库,它可以以非常简单的方式模拟HTTP请求. 如何开始学习 克隆或下载项目,安装依赖. $ pip

【Linux学习】Makefile学习(二)

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 40975    Accepted Submission(s): 13563 Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats g

[学习笔记]iphone学习小技巧

1. 版本控制 -- 是否响应某个方法 .查看当前系统版本. eg: [self respondsToSelector:@Selector(presentModalViewController:animated:)]//Yes:表示响应这个方法 [[UIDevice currentDevice].systemVersion floatValue] < 7.0 //判断当前系统是否小于7.0 2. 模态视图动画设置 eg: ModalViewController *modalVC = [[Moda

(转)Predictive learning vs. representation learning 预测学习 与 表示学习

Predictive learning vs. representation learning  预测学习 与 表示学习 When you take a machine learning class, there's a good chance it's divided into a unit on supervised learning and a unit on unsupervised learning. We certainly care about this distinction f

几种分类问题的区别:多类分类,多标签分类,多示例学习,多任务学习

多类分类(Multiclass Classification) 一个样本属于且只属于多个类中的一个,一个样本只能属于一个类,不同类之间是互斥的. 典型方法: One-vs-All or One-vs.-rest: 将多类问题分成N个二类分类问题,训练N个二类分类器,对第i个类来说,所有属于第i个类的样本为正(positive)样本,其他样本为负(negative)样本,每个二类分类器将属于i类的样本从其他类中分离出来. one-vs-one or All-vs-All: 训练出N(N-1)个二类

视频学习_css基础学习

块状元素 block element 容器元素  设置高宽 width height  可以容纳 文本 内脸 和其他块状 霸道  独占一行 特例:form  只容纳 块状元素 常见元素 http://www.w3cfuns.com/portal.php?mod=topic&quickforward=1&topicid=21 内联元素  inline element 非块状元素 不独占一行 只容纳文本  和内联 常见的 有a 相当与气球 内容越多越大 内联元素不能包含块状元素  气球不能装盒

学习OpenCV的学习笔记系列之-- 环境配置

要想学好OpenCV,首先当然要知道怎么配置环境了.以本人的配置环境为例,步骤如下. 第一步 下载及解压OpenCV源码 虽然很多第三方网站及一些学习论坛会提供OpenCV的源码下载,但是还是推荐到官网进行下载,这样可以避免很多麻烦!(病毒?木马?你懂得!) 官网的下载地址如下: http://opencv.org/downloads.html 在此地址的界面上可以找到最新版本的OpenCV源码.我使用的是2014-04-25更新的2.4.9版本(目前最新),根据自己的系统选择对应的源码版本.

C语言学习 —— 字符串的学习(一)

这是本人在学习 C语言有关 字符串内容 时的相关笔记 由于本人技术有限,如有错误,还望指正 C语言中数据类型中只有 字符型(char),而 char型 变量一次只能存储一个字符,在日常工作中经常需要定义 字符串 ,所以使用 字符数组 来存储和调用字符数据. 1.字符数组的定义和使用 char ch[50];//定义一个长度为50的字符串数组 定义字符串时需要定义字符串的长度,但是如果在定义的同时对字符串进行赋值 则不需要定义长度,代码如下 char ch[] = "I love QIAN&quo