- 博客(41)
- 收藏
- 关注
原创 客户端iOS 的自动化测试
目录你需要准备用Xcode 构建你的测试项目使用 Appium 查找定位器带有页面对象模型的 iOS 移动自动化关联你的Sauce labs account通过 REST API 将您的应用程序上传到 Sauce Labs 存储配置你的设备添加Sauce Labs的配置配置Cucumber 报告Appium 能力配置ActionHelpers Class为 iOS 测试编写测试用例在Sauce Labs 中运行测试项目并且查看报告...
2022-04-01 15:49:12 3773
原创 UI自动化的常见面试问题
常见的元素定位方式 id 根据id来获取元素,返回单个元素,id值一般是唯一的 name 根据元素的name属性定位 tagName 根据元素的标签名定位 className 根据元素的样式class值定位 linkText 根据超链接的文本值定位 partialLinkText 根据超链接的部分文本值定位 cssSelector:css 选择器定位; xpath 通过元素的路径来定位 ..
2022-03-06 18:00:01 923
转载 SSL 和TSL 的区别
SSL协议提供的服务主要有: 1)认证用户和服务器,确保数据发送到正确的客户机和服务器; 2)加密数据以防止数据中途被窃取; 3)维护数据的完整性,确保数据在传输过程中不被改变。 SSL协议的工作流程: 服务器认证阶段: 1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接; 2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息; 3)客服根据收到的服务器响应信息,产生
2022-03-06 13:21:58 3114
原创 基本数据类型和包装类的区别
常见的基本数据类型有八种及其对应的包装类数据类型 长度 默认值 包装类 byte 8位 0 Byte short 16位 0 Shorter int 32位 0 Integer float 32位 0.0f Float long 64位 0L Long duoble 64位 0.0d Double char 16位 \u0000 ---\.
2022-03-06 12:32:45 167
转载 Token的作用
Token 是在服务端产生的,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。为什么要用 Token?要回答这个问题很简单,因为它能解决问题!Token 能解决哪些问题呢?有如下几点:Token 完全由应用管理,所以它可以避开同源策略。Token 可以避免CSRF攻击(保护ASP.NET 应用免受 CSRF 攻击 - 张善友 - 博客园)。Token 可以是无状态的,可以在..
2022-03-06 11:25:21 2814
原创 CSRF是什么
SRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌
2022-03-06 11:08:50 253
原创 浏览器的同源策略
同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。同源的定义如果两个 URL 的protocol、port(en-US)(如果有指定的话)和host都相同的话,则这两个 URL 是同源。这个方案也被称为“协议/主机/端口元组”,或者直接是“元组”。(“元组” 是指一组项目构成的整体,双重/三重/四重/五重/等的通用形式)。下表给出了与 URLhttp://store.compa...
2022-03-06 10:57:27 141
原创 Cookies 和 Session的区别
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。Cookie 在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能.
2022-03-06 10:35:56 118
原创 [手动测试] Mobile App Testing on Sauce Labs
准备SauceLab 账户(注册) 测试APP上传你的APP到SauceLab 通过SauceLab的UI界面上传APP 在 Sauce Labs 的左侧面板中,单击 LIVE,然后单击 Mobile App。 点击上传应用。 您可以拖放应用程序,也可以浏览并选择文件。 我们目前支持 *.apk Android 应用程序文件、*.aab Android 应用程序包文件和 *.ipa 或 *.zip iOS 应用程序文件(解析 *.zip 文件以确定是否存在有效的 *.app 包)。 目前
2022-02-18 18:20:17 960
原创 OWASP ZAP下载、安装、使用(详解)教程
OWASP Zed 攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。也可以说:ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。即可以用于安全专家、开发人员、功能测试人员,甚至是渗透测试入门人员。它也是经验丰富的测试人员用于手动安全测试的绝佳工具。主要拥有以下重要功能:本地代理 主动扫描 被动扫描 Fuzzy 暴力破解
2021-12-01 16:38:21 6939
原创 Jsonpath 常用解析规则总结(二)
HTML常用操作规则表达式 操作符 描述 $ 找到指定的元素 $('ul') $$ 找到多个元素,一般返回元素数组,如果带了index会返回指定的元素 $$('li') or $$('li')[0] shadow$ 找到shadowroot下的指定元素 shadow$('a') 'tag[attribut
2021-11-02 13:58:29 330
原创 Jsonpath 常用解析规则总结
前言:编写UI自动化测试脚本的时候常常需要通过Xpath去定位元素的位置或者JsonPath解析response的结果,这里介绍一下常用的通过Xpath的方式抓去元素的方式以及jsonpath的常用解析规则。JsonPath可在Central Maven存储库中找到。 Maven用户将其添加到您的POM: <dependency> <groupId>com.jayway.jsonpath</groupId> <...
2021-11-01 15:27:12 697
原创 如何利用Gatling Recorder自动生成API测试代码?
这篇文章主要介绍我们刚入门Gatling这种工具的时候如何快速的开始编写测试用例。通过使用Gatling Recorder工具可以帮助我们快速的开始上手。(OS: MAC OS X,开发工具:IDE,浏览器:Chrome, JDK 8)找到项目里的工具Recorder,右键点击运行 会弹出下面的界面,默认的Recorder Mode是HTTP Proxy,这里我们介绍另外一种方式 HAR Convert 选择HAR Converter之后,我们打开浏览器,同时打开F12,勾选Preserv.
2021-08-25 11:16:31 2834
原创 Gatling + MAVEN 做性能测试(四)整合代码使用Jenkins Job 跑性能测试,并且查看Gatling Report
登陆到jenkins,选择右侧的New Item 创建一个新的Jenkins Job输入Job名称,选择Pipeline添加描述信息表明Pipeline用途 设置最多保存多少天的build 输入项目在github的链接设置job的参数,一般设置String或者选择类型的,可以通过参数设置测试环境和测试的用户数量以及运行的测试case设置定时任务每天固定时间运行,具体定义规则可以点击?查看如何设置,这里设置的上海时间每天早上六点运行这里设置j...
2021-08-24 16:59:57 360
原创 Gatling + Maven 性能测试(三)解读Gatling Report
一般本地运行完测试之后会在下图对应的目录下生成测试结果选中测试结果文件夹找到index.xml 文件,用浏览器打开打开之后你会看到下面这种图片:右上角显示你的Simulation的名字 Global information显示你所有的起请求以及请求响应的时间分布,红色代表失败的请求 右边Number of request一般代表你有多少用户并发 statisitics显示了所有请求具体的成功失败情况OK代表成功,KO代表失败,百分比99th pct代表对于这一个API总的请求...
2021-08-24 16:21:38 347
原创 Gatling + MAVEN 做性能测试(二)编写测试代码
这是测试的项目结构,具体每个文件夹是用来做什么,我在前面的项目搭建里面提到过,这里就不赘述了。properties file(包含一些基本的属性信息,例如baseUR,用户名密码之类的)baseUrl=https://ome.uat.ome-staging.eurekacloud.io/loginUri=auth/openid/login?provider=logoutUri=auth/logoutauthUser=auth/usercsrfToken=auth/csrf-token...
2021-08-24 15:47:58 539
原创 NodeJS 更改或读取json测试数据指定的key对应的值
读取NodeJS中支持方法 module.exports={},我们可以直接把测试数据放到这个方法里面,然后从外面直接读取对应的key的值。测试数据module.exports = { server:'pkc-43n10.us-central1.gcp.confluent.cloud:9092', key: '5003', value: { "visitPlanList": [ { "visitBi
2021-08-24 14:30:56 1147
原创 Scala中通过JsonPath读取或者修改指定key的值
pom.xml 中引入依赖 <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.4.0</version> </dependency>修改指定字段: 测试数据文件{ "visitPlanList".
2021-08-15 13:56:33 1061
原创 NodeJS 发送Kafka消息
我当前使用的测试框架是 Cucumber + Nodejs +WebdriverIO,所以文章主要介绍,这种情形下具体怎么使用。项目结构:data下面是kafka消息的具体内容,就是测试数据 env是测试环境信息 feature folder下面是测试文件 specs下面是编写cucumber可是别的语言并且调用kafka的消息 kafka.js是发送具体消息的代码 package.json里面添加依赖的jar版本,我这里使用的是kafkajs第一步:准备测试数据(这里包含SSl和.
2021-08-10 10:39:26 1647
原创 用Scala 发送Kafka消息
分享一下用Scala发送kafka消息。准备 :代码编辑器 IDE offset explore2.1(链接你的cluster,同时查看你的kafka消息是否发送成功)pom.xml 引入 kafka-client新建文件编写脚本:package utilsimport org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord}import org.apache.kaf
2021-08-08 11:59:48 735
转载 小白入门性能测试--------性能测试的步骤
作为一个小白,如何入门性能测试是很多人头疼的问题,比如 jemeter loadrunner gatling supa IPA是什么东西,要怎么用。。。。。(省略100+)。我会有一系列文章介绍什么是性能测试,为什么我们要做性能测试,性能测试的工具有什么区别,怎么开始性能测试之类的。今天这篇文章主要介绍 性能测试的步骤由于工程和项目的不同,所选用的度量,评估的方法也会有所不同。不过仍然有一些通用的步骤可以帮助我们完成一个性能测试的项目,步骤如下:制定目标和分析系统 选择测试度量方法 学习
2021-08-04 15:06:56 447
原创 通过Jenkins pipeline 发送测试结果到Slack Channel
文章会分为三部分介绍Slack app创建新的Slack Channel Jenkins 添加Slack Notification 插件 Jenkins pipeline 编写脚本Slack app创建新的Slack Channel打开Slack Channel 点解添加 channel 创建出来之后添加你需要的成员向 slack channel添加Jenkins CI App。选择添加app,搜索jenkins,最后选择Jenkins CI 点击configu...
2021-07-29 11:32:37 841
原创 Gatling + MAVEN 做性能测试(一)项目搭建
准备工作1. Java Version: 64bits OpenJDK8 or OpenJDK11 with HotSpot https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html2. Build Tool: Maven 3.6.3 or higher https://maven.apache.org/download.cgi3. 开发工具: IntelliJ(社区版)...
2021-07-15 11:37:55 374 1
原创 Linux Update
linux也有相应的更新方式。 更新命令:$sudo apt-get update #更新$sudo apt-get upgrade #升级,需要用update更新完才能upgrade更详细的,请 $man apt-get 此时会从更新源下载并安装。记录更新源的文件:/etc/apt/sources.list默认sources.list中的更新源为官
2018-01-29 11:51:15 6860
转载 LDAP
什么是目录服务? 目录服务就是按照树状存储信息的模式 目录服务的特点? 目录服务与关系型数据库不同? 目录服务的数据类型主要是字符型, 而不是关系数据库提供的整数、浮点数、日期、货币等类型为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax)同样也不提供象关系数据库中普遍包
2018-01-25 15:19:54 820
原创 Linux 系统内核升级
Linux系统管理员平时很重要的一项工作就是负责系统内核升级。做好系统内核的升级工作,对于Linux系 统的稳定性具有至关重要的作用。但是很少有人敢贸然的对Linux系统的内核进行升级,担心会影响现有Linux系统上的应用服务。然而只要做好准备,内 核升级的危险性可以大大降低。可能有人会觉得Windows操作系统升级的比较快,其实Linux系统内核的升级比Windows操作系统要快的多
2018-01-22 13:45:40 2412
转载 seccomp
什么是seccompseccomp(全称securecomputing mode)是linuxkernel从2.6.23版本开始所支持的一种安全机制。在Linux系统里,大量的系统调用(systemcall)直接暴露给用户态程序。但是,并不是所有的系统调用都被需要,而且不安全的代码滥用系统调用会对系统造成安全威胁。通过seccomp,我们限制程序使用某些系统调用,这样可以减少系统的暴露面,同时
2018-01-19 13:32:51 2775
原创 SELinux基础与AppArmor
SELinux基础与AppArmor一 SELinuxSELinux(Secure Enhanced Linux):安全增强的Linux 是一个Linux安全策略机制,允许管理员更加灵活的定义安全策略。SELinux是一个内核级的安全机制,从2.6内核之后,集成到Linux内核中。 SELinux定义了两个基本概念:1.域:对进程进行限制;2.上下文:对文件进行限制;SELinux通过策略规定
2018-01-19 10:25:08 1024
原创 HTTP协议之multipart/form-data请求分析
首先来了解什么是multipart/form-data请求:根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢?这就要从头来说了。http协议大家都知道是规定了以ASCII码传输,建立在tcp、ip协议之
2017-11-26 18:41:33 455
转载 线程安全非线程安全的区别
ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题。面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuff
2017-11-25 16:56:13 767
原创 hashcode equals和==的区别
先说==和equals的区别如果对象是基本类型的话只能用==如果是引用类型的话 equals比较的是两个对象的值是否相等 而==比较的是两个对象是否指向同一个内存地址hashcode和equals()区别:1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;2、如果两个
2017-11-25 15:04:22 404
转载 list set map的特点及区别
List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是。 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Col
2017-11-25 14:55:12 2157
原创 计算机中的堆和和栈(物理内存上的解释)
编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?1. 在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?2. 它们的作用范围是什么?3. 它们的大小由什么决定?4. 哪
2017-11-25 14:06:08 11831 2
原创 单链表,双链表,循环链表的区别
单向链表(单链表) 单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向表中的下一个节点,而最后一个节点则 指向一个空值NULL。单向链表只可向一个方向遍历。查找一个节点的时候需要从第一个节点开始每次访问下一个节点,一直访问到需要的位置。也可以提前把一个节点的位置另外保存起来,然后直接访问。双向链表,(双链表) 双向链表中不仅有指
2017-11-25 13:19:47 1284
转载 数组、链表、堆栈、队列和树
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解---无论购物就餐都需要排队;栈可以认为就是个栈道---只允许一个人通过的小道,而且只能从一端进入,然后再从这端
2017-11-25 11:43:49 318
原创 Java中常见的查找算法
对于查找算法而言,常用“其关键字和给定值进行过比较的记录个数的平均值”作为衡量查找算法的依据。静态标的查找:顺序查找:从表的第一个或者是最后一个记录开始查找,逐个将表记录的关键字和给定值进行比较,相等则查找成功,不相等则失败。折半查找:(针对有序序列)折半查找的前提条件是在一个有序的序列中。首先确定待查记录所在的区间,然后逐步的缩小范围区间直到找到或者找不到该记录为止。与数学中
2017-11-24 21:53:19 701
原创 Java去重算法
1. 循环list中的所有元素然后删除重复[java] view plain copypublic static List removeDuplicate(List list) { for ( int i = 0 ; i 1 ; i ++ ) { for ( int
2017-11-24 21:51:09 6257
转载 排序常见的八大算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,
2017-11-24 21:49:03 287
转载 常见Java框架
转自:http://www.cnblogs.com/im/archive/2008/09/09/1287905.html常见JAVA框架 Spring Framework 【Java开源JEE框架】Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Sp
2017-11-24 21:45:52 443
原创 java 典型基础编程题
【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题public class lianxi01 {public static void main(String[] args) {System.out.println("第1个月的兔子对
2017-11-15 08:42:08 677
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人