什么是接口(API)
API全称Application Programming Interface,这里面我们其实不用去关注AP,只需要I上就可以。一个API就是一个Interface。我们无时不刻不在使用interfaces。我们乘坐电梯里面的按钮是一个interface。我们开车一个踩油门它也是一个interface。我们计算机操作系统也是有很多的接口。(这是目前个人找到比较好理解的一段解释)
接口就是一个位于复杂系统之上并且能简化你的任务,它就像一个中间人让你不需要了解详细的所有细节。那我们今天要讲的Web API就是这么一类东西。像谷歌搜索系统,它提供了搜索接口,简化了你的搜索任务。再像用户登录页面,我们只需要调用我们的登录接口,我们就可以达到登录系统的目的。
现在市面上有非常多种风格的Web API,目前最流行的是也容易访问的一种风格是REST或者叫RESTful 风格的API。从现在开始,以下我提到的所有API都是指RESTful风格的API。
什么是接口测试和为什么要做接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。
接口测试的策略
接口测试也是属于功能测试,所以跟我们以往的功能测试流程并没有太大区别,测试流程依旧是:1.测试接口文档(需求文档) 2.根据接口文档编写测试用例(用例编写完全可以按照以往规则来编写,例如等价类划分,边界值等设计方法) 3. 执行测试,查看不同的参数请求,接口的返回的数据是否达到预期。
接口是指外部系统与系统之间以及内部各子系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。
常见web接口:一类是http协议的接口,另一类是web service接口(如soup、rmi、rpc协议)。本文主要介绍http请求接口。
常见的http请求方式包括:get(查)、post(增),除此之外还有put(改)、delete(删)等。
下面是软件测试种类
1 数据和数据库完整性测试
- 数据库完整性原则: 主码完整性(主码不能为空); 外码完整性(外码必须等于对应的主码或者为空)。
- 数据合理性:数据在数据库中的类型,长度,索引等是否建的比较合理。
2 白盒测试
2.1 静态白盒测试
2.2 动态白盒测试
3.功能测试
功能测试指测试软件各个功能模块是否正确,逻辑是否正确。
4.UI测试
5.性能测试
性能测试主要测试软件测试的性能,包括负载测试,强度测试,数据库容量测试,基准测试以及竞争测试。
5.1负载测试
5.2强度测试
5.3数据库容量测试
5.4基准测试
5.5竞争测试
6. 安全性和访问控制测试
6.1应用程序级别的安全性
6.2系统级别的安全性
7.故障转移和恢复测试
- 故障转移测试可确保:对于必须持续运行的系统,一旦发生故障,备用系统就将不失时机地“顶替”发生故障的系统,以避免丢失任何数据或事务。
- 恢复测试是一种对抗性的测试过程。在这种测试中,将把应用程序或系统置于极端的条件下(或者是模拟的极端条件下),以产生故障(例如设备输入/输出 (I/O) 故障或无效的数据库指针和关健字)。然后调用恢复进程并监测和检查应用程序和系统,核实应用程序或系统和数据已得到了正确的恢复。一定要注意主备定时备份 比如电信系统,突然主机程序发生死机,备份机器是否能够启动,使系统能够正常运行,从而不影响用户打电话?
8.配置测试 又叫兼容性测试。
- 浏览器兼容性: 测试软件在不同产商的浏览器下是否能够正确显示与运行; 比如测试IE,Natscape浏览器下是否可以运行这套软件?
- 操作系统兼容性 :测试软件在不同操作系统下是否能够正确显示与运行; 比如测试WINDOWS98,WINDOWS 2000,WINDOWS XP,LINU, UNIX下是否可以运行这套软件?
- 硬件兼容性: 测试与硬件密切相关的软件产品与其他硬件产品的兼容性,比如该软件是少在并口设备中的,测试同时使用其他并口设备,系统是否可以正确使用. 比如在INTER,舒龙CPU芯片下系统是否能够正常运行? 这样的测试必须建立测试实验室,在各种环境下进行测试。
9.安装测试
- 第一个目的是确保该软件在正常情况和异常情况的不同条件下:例如,进行首次安装、升级、完整的或自定义的安装_都能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。
- 第二个目的是核实软件在安装后可立即正常运行。这通常是指运行大量为功能测试制定的测试。
安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。
10.多语种测试 又称本地化测试
- 当语言从A翻译到B,字符长度变化是否影响页面效果。比如中文软件中有个按键叫“看广告”,翻译到英文版本中为 “View advertisement”可能影响页面的美观程度
- 要考虑同一单词在各个国家的不同意思,比如football在英文中为足球,而美国人使用中可能理解为美式橄榄球。
- 要考虑各个国家的民族习惯,比如龙个美国中被理解邪恶的象征,但翻译到中国,中国人认为为吉祥的象征。
11.文字测试
12.分辨率测试
13发布测试
- 说明书测试: 主要为语言检查(检查说明书语言是否正确,用词是否易于理解)、功能检查(功能是否描述完全,或者描述了并没有的功能等)、图片检查(检查图片是否正确 )
- 宣传材料测试: 主要测试产品中的附带的宣传材料中的语言,描述功能,图片。
- 帮助文件测试:帮助文件是否正确、易懂、是否人性化。最好能够提供检索功能。
- 广告用语: 产品出公司前的广告材料文字、功能、图片、人性化的检查 。
14 文档审核测试
- 需求文档测试: 主要测试需求中是否存在逻辑矛盾以及需求在技术上是否可以实现;
- 设计文档测试: 测试设计是否符合全部需求以及设计是否合理。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!