测试课堂笔记

unittest框架

主要完成

测试用例的编写

测试用例的执行 - Module, Classes, TestCases

HTMLTestRunner - 生成测试报告

测试要求

  1. 必须test开头

  2. 编排顺序

核心四大概念

testcases - 测试用例,是一个独立的测试单元,它检输入特定的数据的响应,unittest.testcases

testsuite - 测试套件,将要执行的测试用例放在一起,进行执行

testfixture - 脚手架(夹具)固定装置,表示开展一项或者多项测试所需的准备工作,以及所有相关的清理操作(setup/teardown)

testrunner - 测试执行器,是一个用于执行和输出测试报告的组件

主要类

main - unittest.main 调用测试用例的执行,test命名开头的

testsuite - 测试用例形成测试集

TextTestRunner - run方法,执行测试套件(套件中的测试用例)

Skipxx - 跳过,哪些用例不执行,按照某种规则跳过

TestLoader - 将测试用例装载后,放到TestSuite

LoadTestsFromTestCase(TestCaseClass)从测试类中装载测试用例

LoadTestsFromModule()

LoadTestsFromName(TestModule.TestCasesClass.TestMethod) 具体到测试用例方法

LoadTestsFromNames

setUp/tearDown属于测试用例,只要有用例,就要执行

setUpClass/tearDownClass 属于测试类的,每个类只执行一次

断言

self.assert

self.assertEqual(1,2,“难道一等于2吗”) # 注意实际结果放在后边,期望放在前面

用例数

一条测试用例种,一组数据就是一条测试用例,有几组数据,就有几条测试用例被执行

参数化

使用parameterized.expand进行参数化时,参数传递是按照顺序进行的

Appium实战

Android生态环境

移动端系统是什么 IOS(Unix)(Xcode),android(Java)(linux),Sybian(闭源)

Android App (web浏览器)、原生Java(App)、混合App(App+Browser(内核))

Android Linux

App工作过程

web应用- 浏览器 -》 前端服务器-》后端服务器-》数据库

App应用- App-》前端服务器-》后端服务器-》数据库

相同部分(静态资源(CSS),js,html)

不同部分(DIV,CSS,后端接口)

手机端测试类型

功能性 -

兼容性 - 安装启动,app之间, 硬件之间

稳定性 - Monkey测试()

场景测试 - 业务场景,弱网,飞行模式

用户体验 -

专项测试 - 交叉时间

WebUI - Appium

Adb 命令学习

adb devices列出连接到计算机的设备

adb connect 127.0.0.1:62001 连接某一个设备

adb shell 进入一个终端设备,如果多个设备设备的时候需要指定设备名称或id 如:adb -s 127.0.0.1:62001 shell

aapt dump badging E:\Temp\app_study\yibijizhang.apk 查看包名和acitivity名字

20200729_162524_153.png

20200729_162603_915.png

adb uninstall 卸载一个软件 adb -s 127.0.0.1:62001 uninstall com.mobivans.onestrokecharge (包)

adb install 安装一个软件 adb -s 127.0.0.1:62001 install -r E:\Temp\app_study\yibijizhang.apk

adb shell pm list packages | findstr com.mobivans.onestrokecharge 查找已安装的包 (findstr 类似于grep,findstr windows 平台)

adb shell am start -n com.mobivans.onestrokecharge/com.stub.stub01.Stub01 - 启动app

adb shell am force-stop com.mobivans.onestrokecharge 停止app 这时候只需要给包名

adb shell am start -W -n com.mobivans.onestrokecharge/com.mobivans.onestrokecharge.activitys.BootActivity - 查看app热启动和冷气动时间

adb shell dumpsys cpuinfo - 查看CPU资源

接口:
什么是接口,
接口:信息交互,数据交换. 计算机世界:数据,规则,协议,建立良好的可靠的安全的沟通方式,传送方式
接口的定义:就是各方按照某种规则协议进行信息的交互和数据的交换
接口发生在哪:
模块和模块之间,数据库对接的.系统和系统()
服务与服务之间,

产品分层:
前端(http,(动态,servlet,jsp)静态:js(npm)),
后端(接口服务)
中台:从组织角度去分。
业务层:
数据层:数据的运算和处理
存储层:数据的存储
架构层:
所有层之间的工作,数据交互,都是通过接口

公要(pup):进行加密,私要(ppr):进行解密

接口相关操作:
协议,域名,端口 ,URI:通过它来访问资源(统一资源标识符)(URL,资源路径)
协议的价值:

https (加密)

按照某种规则进行数据的传递,共享,便于接收数据后,进行数据解析,获取数据,帮助我们建立可靠安全的协议
4层模型:
7层模型:理论模型

访问一个web页面过程是什么:
通过协议发送请求,通过tcp完成三次握手,传输数据(一个一个切成分化传输,接收顺序是乱的),
和服务器绑定,建立一个sseion,申请获取数据,返回数据。
3:保持会话,连接。完成数据传送后断开连接
http:协议
baidu.com:域名
后面的是资源,接口连接,目录
80:不加密,443:加密
浏览器是服务端(c/s)
客户端(b/s)

接口测试思路:
采用的思路是规范和方法先行。其次是工具的选择,人员的培训,然后是实施和过程化,持续集成。

为什么要进行自动化测试:
系统越来越复杂,产品都是按照接口设计进行的。数据之间的交互,都是通过接口提供服务完成,接口变成了我们的测试对象了。

接口测试容易实现自动化(GUI)也容易实现持续集成,相比较GUI自动化,比较稳定,可以减少测试人力,成本与时间。缩减了测试周期,支持了快速的迭代,接口的持续集成降低了成本提高了效率。

接口测试原理:
根绝规范(参数,协议,调用方法,code含义,返回数据得到意义等),模拟请求,向接口发送数据(报文),在获取返回结果(响应),依据响应进行断言。

设计用例:
1:规范(参数,协议,调用方法等。接口文档)
2:断言(设计断言,返回数据的意义)1,返回的数据,2,返回的值。
&下一个参数
具备的条件:(http)
接口:url,域名后面的,。特征码后面的就是参数。
方法:get,获取数据信息我请求多少次数据都不变化,post(send,receive)服务器资源发生变化(增加资源)。
参数:get(字典,json,文件,string,query):可以带参数的,进行数据过滤。
响应结果(response):正确响应,正常业务的响应数据,错误响应(error,message)(null,空参数,类型不匹配),接口对错误提示要求非常高(
一个用例要有多个断言,不能只盯状态码,不能只看接口本身的断言,断言相关联的接口(接口关联))

接口测试流程:
需求讨论-需求评审-确定需求-产品接口定义-根据需求文档以及接口文档定义(设计测试用例)-用例评审-编写接口测试用例-执行-维护

测试用例设计:
接口功能(业务功能,接口本身功能,非业务功能(性能,接口并发,)合法性校验(身份,权限),异常处理(非法数据的校验,非常规(大量)安全性,可靠性))
选择对象:按照业务流(业务流程),数据流(查看接口和下一个接口是不是异常,查看数据库,如果数据库有信息,那就分析问题发生在前端还是后端。)可以选择断言点。依据接口的相关测试(输入/输出)
接口测试从功能角度,业务角度,数据流角度,性能问题。

测试用例包括:
1:功能点:测试环境,业务本身的功能点,测试数据,执行操作和预期结果
如果接口过于复杂:可以对接口结构的划分(分段,分片(细化功能,层次,平台(环境)))
用例环境:
程序内部环境和程序调用的外部接口(注意断言的地方)
测试数据:
系统数据,环境数据,配置数据(数据库)
接口参数数据,正常场景,异常场景的数据,业务逻辑数据,构思数据(数据从哪里来,到哪里去,经历了什么过程,做了什么改变)。
边界值分析:
业务边界:输入参数的合法性,不合法的,超常的,空的,null。覆盖所有的必须参数(接口文档说明),组合可选参数(必选的和可选的进行组合,必须无可选,全可选部分必选)
参数有无
参数顺序,个数,类型,长度
参数类型数值大小,数值的范围
参数字符串长度:null,max,max+1,min,min-1
特殊符号:!@#%^&*- +
异常分析:
正常数据的异常,并发测试,事务测试
错误数据的异常
其他异常:阻止重复提交(post)防止变化

安全性测试:
用户名,session,敏感脱敏处理(身份证,卡号,生日,领导名字,照片,国家信息)

测试过程验证点:
接口返回数据:返回的json层次关系与文档的是否一致,层次关系:一层一层不能改变。
数据类型:数值金额,负数,小数转换(进,舍)
接口返回数据与接口文档是否一致
接口返回数据与数据库的是否一致
接口返回数据是否符合业务逻辑(数据与时间,以及业务的匹配)
对于列表应根据请求参数,也应该验证列表的长度
负面的测试用例应该验证错误响应

接口测试的质量评估标准:

业务功能的覆盖率(主要业务流程覆盖,)
业务逻辑的覆盖()
参数验证是否达到要求(必选参数和可选参数的组合)。文档错误信息尽量保证达到100%
接口异常场景是否达到要求
接口的覆盖率(数量,功能,规则,参数)
代码覆盖率是否达到要求
性能指标:小范围并发测试
安全指标

接口测试怎么进行的:
1、需求分析,流程角度,思想,测试的方法基本一样
2、编码设计(我怎么考虑断言,接口状态码断言,内容相关的断言,技术角度,编写测试用例的时候我们的自动化开发了一个框架(分层)通过执行,通过什么生成测试报告。
我会判断错误信息,根据错误信息是功能导致,还是脚本的编写,写1个简单的测试代码,是不是我想要的功能,判断数据问题,格式问题,元素的定位不到,是有时间的问题,大胆的判断和猜想,是不是代码的问题,脑袋里过一遍代码排错看看有没有不合适的地方
3、测试用例编写,调试。排错能力上出发。

http协议:
1、理论角度,什么是http协议:()
2、能干什么?为什么要有http协议(用在哪)
3、特点、特征(特性的描述)
4、cookie ,session,token(跟我有关的有哪些)
因为我们的互联网都是通过http协议弄的,适应前段展示和app展示
端口是和TCP绑定在一起的(专门开辟80通道,给TCP协议使用)

1.传送数据先建立连接,
2.发送协议请求,
3.服务器接受请求并返回http响应:响应头,响应体,状态码,
4. 释放连接TCP连接
5. 客户端浏览器解析HTML内容
每个跳转的地方都相当与路由器
MAC地址是唯一的,区域是不允许重复的。
IP地址
TCP:负责运输的。靠知道的IP地址
HTTP收件人(解析数据)展示到页面上,是我们最终的数据

流程:(底层用的TCP协议)

1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器(请求报文);
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器(响应报文)
5、释放 TCP连接(四次挥手,确保数据传输完毕断开连接。);
6、浏览器将该 html 文本并显示内容(客户端的功能);  

HTTP特点:
1:请求一次,响应一次(基于-请求-响应的模式)
2:http协议是基于TCP协议进行传输的
3:无状态(连接状态,不保存用户信息,引入cookie,再用HTTP协议通信,就可以管理状态了)
4:无连接(无法和每个用户保持长久的连接),现在有需要状态和长连接(cookie,部分数据更新(动态交互AJax)websocket)
5:cookie保持数据长久化链接(不可以跨域)
http请求方法:get:从服务器获取我想要的信息
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
post:把本地对象推送给服务器
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

状态码:
1xx消息——请求已被服务器接收,继续处理
2xx成功——请求已成功被服务器接收、理解、并接受
3xx重定向——需要后续操作才能完成这一请求
4xx请求错误——请求含有词法错误或者无法被执行
5xx服务器错误——服务器在处理某个正确请求时发生错误(很有可能有bug存在)

URL:

传送协议。
层级URL标记符号(为[//],固定不变)
访问资源需要的凭证信息(可省略)
服务器。(通常为域名,有时为IP地址)
端口号。(以数字方式表示,若为HTTP的默认值“:80”可省略)
路径。(以“/”字符区别路径中的每一个目录名称)
查询。(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
片段。以“#”字符为起点

http,是协议;
www.luffycity.com,是服务器;
80,是服务器上的默认网络端口号,默认不显示;
/news/index.html,是路径(URI:直接定位到对应的资源);
?id=250&page=1,是查询。
大多数网页浏览器不要求用户输入网页中“http://”的部分,因为绝大多数网页内容是超文本传输协议文件。同样,“80”是超文本传输协议文件的常用端口号,因此一般也不必写明。一般来说用户只要键入统一资源定位符的一部分(www.luffycity.com:80/news/index.html?id=250&page=1)就可以了。

由于超文本传输协议允许服务器将浏览器重定向到另一个网页地址,因此许多服务器允许用户省略网页地址中的部分,比如 www。从技术上来说这样省略后的网页地址实际上是一个不同的网页地址,浏览器本身无法决定这个新地址是否通,服务器必须完成重定向的任务。

cookie(本地客户端),session(服务器),token
接口签名:公共服务。
鉴权:鉴定权限
授权:授予权限
(跟我有关的有哪些)
1:浏览器看到set-cookie将此字段的session通过cookie进行保存的(保存到本地)
2:cookie是一些文本文件,通常是加密过的,存储在本地浏览器里,用来识别用户的。优点是网站根据cookie里的信息来确认访问用户的,对网站的易用性有一些好处,缺点是滥用cookie会泄露隐私等(session存储是一个对象形式)
3:cookie主要内容包括:名字,值,过期时间,路径和域

session:
基于cookie实现的,它利用一个sessionID把用户的敏感数据隐藏起来

实现方式:

客户端发起请求
服务端检查header,发现没有cookie,生成sessionID
服务端返回报文中,增加set-cookie,把sessionID带上发给客户端
客户端收到报文并把sessionID存储,下次发送带上该值。
服务器读取sessionID,通过session,我们可以得到对应用户的隐私信息,如ID,Email。

区别
session是依赖于cookie实现的
cookie存储客户端,session存储在服务器上

为什么自定义header
1:content-type(识别数据的格式)
2:cookie:服务端检查header,发现没有cookie,就无法进行操作
3:Agent

http和https有哪些区别
https在http协议的基础上增加了SSL加密
可以很好的解决:
信息加密
校验机制
身份证书
加密方法:
混合加密(非对称加密,对称加密(AB用公用的))
摘要算法(实现完整性,能够数据生成独一无二的指纹)MD5
数字证书
SSL/TLS基本流程:
方法,接口,格式,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值