
APP测试
文章平均质量分 76
叶赫那拉 赫敏
利用测试技术赋能世界发展
展开
-
Google 测试总监聊如何经营成功的测试职业生涯
你是如何开始做测试工作的?1989 年,我在田纳西大学读研究生的时候,完成了从软件开发人员到软件测试人员的转型。而这一转型并非出于我自己的选择。我命运的改变发生在一个早晨,我的教授质问我为什么缺席那么多开发会议。我解释说因为会议被安排在星期六早上,很不方便。而作为一个生平第一次离开家的新入校的研究生,这个时间段有些麻烦。十分有意思的是,等待我的惩罚并不是一纸解聘通知书,而是被判罚为该小组的唯一一个测试人员,且不能与开发团队有任何交流。对于我的职业生涯来说,这是一个意义多么重大的决定啊!正是这个决定最终成就了原创 2022-10-09 16:56:00 · 436 阅读 · 0 评论 -
Java or Python?测试开发工程师如何选择合适的编程语言?
Python 作为大数据工程和 AI 的主流开发语言,一直保持强劲的上升趋势,即使目前 AI 还没有大量的成功的商业案例(盈利的)就已经很火爆了,一旦成功的商业模式建立起来,Python 开发和测试的需求更会爆发性增长。另,除了 Python 和 Java,如果大家还想学习一门新的语言,我建议大家学习 Go,那也是一个明日之星。Java 用来做测试开发,还是太重了点,技术点比较复杂,学习曲线长,编写测试代码的速度慢,Python 编写速度快,非常适合测试资源不充足的情况下,快速开发测试工具。原创 2022-10-09 16:54:21 · 625 阅读 · 0 评论 -
干货 | 背熟这些 Docker 命令,面试再也不怕啦~
我们下载 Docker 镜像的时候,默认会访问 Docker 网站,而 Docker 网站是在国外部署的,距离比较远下载速度特别慢。如 busybox:1.26 就会删除 busybox 软件的 1.26 版本的镜像,不会删除latest 版本的镜像。3.根据个人的系统平台,选择运行 Docker 的 OS,并按照操作文档的要求修改Docker 配置文件,然后重启 Docker 服务即可完成加速器的配置。• 使用导出命令导出的镜像,可以通过此命令导入到没有下载此软件的操作系统,方便网络条件差的情况使用。原创 2022-09-19 11:47:33 · 276 阅读 · 0 评论 -
版本控制神器GitHub的基本使用与踩坑,教你一铲子填平!
首先需要申请GitHub帐号,这个就不多说了,大家自行百度或Google吧哈。这里默认大家都已经有GitHub账号了~第一次使用,如果没有配置好,会遇到各种问题,比如下面的这些:问题二:问题三:遇到问题会很影响心态,我是有过这样的感受~ 明明别人弄就可以或者视频里也是这样教学的,我一个一个对了,眼都对花了都不行,这时候很可能是别人经常用,很多配置早就配好了,自然就没有第一次使用遇到的各种问题了;原创 2022-09-16 14:33:02 · 138 阅读 · 0 评论 -
了解磁盘IO的那些事
作为程序开发,我们的任务就是在操作系统允许的范围内,了解其原理,减少磁盘 IO 中数据的搬运以及系统的调用的次数,提高系统的性能。尽管有了协处理器 DMA 的参与,但是数据的读取依然存在多次的数据搬运的过程,减少数据多次的搬运,是否能提高程序运行的性能?对于数据写磁盘的事情也是受到操作系统内核的约束,我们在程序开发的时候,经常性做的一件事件就是将写的操作放到一块,一起写入磁盘,而不是需要写的时候就直接写入,尤其在操作数据库的时候。③. 磁盘驱动器收到内核的 IO 请求,把数据从磁盘读取到驱动器的缓冲中。原创 2022-09-16 14:15:25 · 420 阅读 · 0 评论 -
移动广告SDK测试思路
以公司内部广告SDK为例,如下图所示,应用APP通过调用广告SDK接口,进行广告的展示等操作。随着国家对隐私数据保护,访问权限的控制,用户服务鉴权等越来越严格,安全测试也是重要部分,例如移除imsi和android ID等字段,增加下载类广告隐私信息协议等。对开发者来说,SDK接口里面的具体实现是透明的,当上层调用时遇到问题,只能依赖SDK打印的日志来定位分析。兼容测试的工作量通常是比较大的,可根据产品需求和市场现状对需要适配的设备机型做分析,覆盖的机型、系统版本、分辨率等进行优先覆盖排序。原创 2022-09-16 14:10:27 · 296 阅读 · 0 评论 -
JVM内存溢出问题排查
当然,分析和解决内存溢出相关问题的步骤,不是固定的,还需要根据实际情况去做调整,止损是第一位的,正常情况我们需要快速重启的先,重启可以使服务快速恢复,但是只重启,指标不治本,如果没有定位到溢出的原因,重启一段时间可能又会溢出。内存溢出 out of memory : 通俗理解就是内存不够用了,是我们工作当中经常会遇到的问题,内存溢出有可能发生在正常的情况下,而非代码层面问题导致,比如高并发下,大量的请求占用内存,垃圾回收机制无法进行回收,而导致的内存溢出,这种情况就需要我们去调整架构了。原创 2022-09-09 14:31:04 · 697 阅读 · 0 评论 -
Shell 进程通过 ContentProvider 实现跨进程通信
今天分享一下Uiautomator1.0与server app跨进程通信的方案,我们一般情况下都使用socket进行通信,但是当server app没有运行时就很难及时处理,我们让server app实现ContentProvider来对外提供服务,即使server app没有运行,我们也能正常调用服务,系统会自动帮我们启动server app。**authority:**校验字符串,必须与server app内指定的保持一致。**arg:**访问字符串参数,一般不用。**method:**调用的方法名。原创 2022-09-08 14:49:25 · 218 阅读 · 0 评论 -
Vue3.0 如何写自定义指令
先来看看注册全局指令的方式,通过 Vue.directive( id, [definition] ) 方式注册全局指令,第一个参数为自定义指令名称(指令名称不需要加 v- 前缀,默认是自动加上前缀的,使用指令的时候一定要加上前缀),第二个参数可以是对象数据,也可以是一个指令函数。自定义指令好就好在:原先的那些通用组件,无论是纯js的也好,基于jQuery的也好,都可以拿来主义直接吸收,而不需要改造或重构。**pdated:**在包含组件的 VNode 及其子组件的 VNode 更新后调用。原创 2022-09-08 14:44:28 · 242 阅读 · 0 评论 -
如何提高站内SEO
EO分为两种 一种是站内SEO和站外SEO:通常技术人员要做的就是站内SEO,站内SEO起到的作用是搜索时候引擎可以很好的抓取到,例如前面讲到的,在实现过程中尽量少的使用无语义的标签div和span,合理的使用title、description、 keywords,等。提高关键词密度:在操作企业站的时候,我们经常遇到是站点首屏一个大的横幅banner,几乎占用了首页的大部分页面,为了有效的提高首页核心关键词密度,我们只能利用一切办法增添关键词,比如:在图片的alt标签中添加。这是最好最标准的写法。原创 2022-09-08 14:42:24 · 102 阅读 · 0 评论 -
分布式自增ID算法Snowflake简介
过去的项目开发中,我们常常选用的数据库是mysql,mysql以其体积小、速度快等优势,备受中小型项目的青睐。但是数据迁移后我们遇到一个问题,之前mysql数据库中,我们采用的是自增id主键,可选用的tidb又对自增主键不是很友好,所以我们选用了另一种主键生成方式:Snowflake算法。SnowFlake算法是Twitter设计的一个可以在分布式系统中生成唯一的ID的算法,它可以满足每秒上万条消息ID分配的请求,这些消息ID是唯一的且有大致的递增顺序。所有位数加起来共64位,恰好是一个Long型。原创 2022-09-08 14:37:58 · 241 阅读 · 0 评论 -
微服务架构中注册中心Zookeeper和Eureka我们应该怎么选?
为了解决这些问题,微服务架构就产生了,微服务是一种架构风格,也就说将复杂的应用拆分成多个独立的服务,服务之间通过松耦合的方式调用。目前经常被用到作为注册中心的有Zookeeper和Eureka,那么此时我们就会纠结如何去选择这两个注册中心,下面我们来系统的学习这两种注册中心的原理和优劣势,这样才能在架构搭建中合理的选择注册中心。所以实际上也没什么大问题。Eureka高可用实际上将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,从而实现服务清单的互相同步,达到高可用效果。原创 2022-09-08 14:34:24 · 697 阅读 · 0 评论 -
技术分享 | Jenkins 如何参数化job ?
在部署测试环境的时候,同一个项目根据不同需求,要部署不同的分支进行测试,这个时候可以对输入的分支名称进行参数化来达到目的。原创 2022-09-08 14:27:36 · 1660 阅读 · 0 评论 -
GraphQl:让你的接口所得即所要
可以强行写作 GraphQL,但得不到显著的好处。它定义了字段的类型、数据的结构,描述了接口数据请求的规则,当我们进行一些错误的查询的时候 GraphQL 引擎会负责告诉我们哪里有问题,和详细的错误信息,对开发调试十分友好。② Query 是比较简单的,语义很清晰,和 API 文档不同的是,在 Query 中增加了一个 version,这是为了简单对比一个 restful ,如果是 restful 的话,我们要获取 books 和 version 这两个资源,需要两个 API,但 graphq只需要一个。原创 2022-09-07 15:34:04 · 209 阅读 · 0 评论 -
code2vec 代码的连续分布式矢量表示
我们可以通过分析成千上万个编写良好的软件项目的文本,发现部分表征可靠,易于阅读且易于维护的软件的模式。代码分析问题可以从多角度衡量代码,可覆盖 code-code、code-text、text-code、text-text 等类别,包括代码克隆检测、代码缺陷检测、代码完形填空、代码补全、代码纠错、代码翻译、代码检索、代码生成、代码注释生成、代码文档翻译等任务。随着软件工程的发展,人们越来越重视代码数据的收集与表征,一些新颖的代码特定的神经网络也被提出,我们有理由期待深度学习方法在未来代码分析任务中的表现。原创 2022-09-07 14:06:09 · 220 阅读 · 0 评论 -
Pandas数据分析及可视化应用实践
上面是将两个子数据集合并,也可以多个子数据集合并,将data_movies,data_ratings与data_users一起合并成data1,可以使用两层merge函数合并数据集,也可以使用merge函数将data与data_users合并。首先定义x,y轴数值,然后绘制图形,设置图形属性,包括颜色,线条,坐标轴范围,线条标记,设置图形标题等,最后使用plt.show( )绘制图形。上面展示的都是子数据的原始状态,但是在数据分析过程中,原始数据可能不满足数据分析的要求,这里做一些简单的处理。原创 2022-09-07 14:04:17 · 604 阅读 · 1 评论 -
Aiomysql 与 Sqlalchemy 的使用
但是我们做项目,又很少能过遇到修改数据库的情况,所以是否要使用sa,看各位的需求!上面无论是使用aiomysql还是使用sa,都没有使用外键进行约束,关于是否使用外键,业内有两种不同的意见,支持使用的会认为,人为的写程序难免会有bug, 会有不注意的地方,就好比jobs表中插入了一个userid为100的数据,但是userid为100的用户并没有在user表中,这时如果使用外键约束,则插入会失败. 在mysql数据库的层面上对数据一致性增加了一层保障。但是这里我们来看一个老生常谈的问题,sql注入问题。原创 2022-09-07 13:58:58 · 612 阅读 · 0 评论 -
Lambda表达式介绍和底层实现分析
所以使用lambda表达式的地方,会在类编译的时候在本类中生成对应的私有静态方法和一个INNERCLASS的访问标识(具体是什么东西没找到资料,注释显示是一个访问标识),该访问标识会调用引导类加载器动态生成内部类,该内部类实现了函数式接口,在实现接口的方法中,会调用编译器生成静态方法,在使用lambda表达式的地方,通过传递内部类实例,来调用函数式接口方法。函数式接口本身就是一个普通的接口,而lambda表达式本质上和匿名内部类是一样的,只不过条件更加苛刻。原创 2022-09-07 11:19:03 · 237 阅读 · 0 评论 -
技术分享 | Jenkins 持续集成体系介绍
Jenkins 是一个广泛用于持续构建的可视化 Web 工具,持续构建包括项目的自动化编译、打包、分发部署。Jenkins 可以很好的支持各种语言(比如:Java、 C#、 PHP 等)的项目构建,也完全兼容 Ant、Maven、Gradle 等多种第三方构建工具,同时跟 SVN、Git 能无缝集成,也支持直接与知名源代码托管网站,比如 Github 直接集成。安装插件的时候需要注意,因为插件都在海外,安装会非常缓慢,建议先跳过插件安装,在后续的系统配置中设置插件更新代理地址,来重新安装所需插件。原创 2022-09-07 11:08:49 · 237 阅读 · 0 评论 -
技术分享 | Jenkins job 机制该如何使用?
Jenkins 像老板一样管理各种 job。job 是 Jenkins 的一个执行计划,是一系列操作的集合,Jenkins 里的最常用的功能就是 job 的构建,即任务的构建。通过构建 job 即可让工人为你工作。构建功能是Jenkins的核心功能,Jenkins任务具体的执行内容一般都由此配置进行控制,可以通过Shell脚本或者其他类型的脚本,定制化的完成任务。其他配置类型将会在后面的章节进行具体的介绍。关注我,带你一起免费学习。原创 2022-09-07 10:44:35 · 246 阅读 · 0 评论 -
技术分享 | 接口测试中,请求超时该怎么办?
A 发送请求,然后等待 B 的响应,同时开始超时计时,如果在超时时间内成功接收到响应,则结束等待和计时。如果到了超时时间还没有接收到响应,则结束等待同时此次通讯失败,这个过程叫做请求超时。在接口自动化测试过程中,也常常会碰到请求超时的场景。通过 setParam() 设置超时时间,第一个参数为连接的类型,第二个参数为超时的最大时长,单位是 3000 毫秒。编写三条测试用例,在 test_two 测试用例中设置超时时间为 3 秒,超过 3s 还没有得到响应的话则抛出异常,然后正常执行后面的测试用例。原创 2022-09-06 14:21:59 · 858 阅读 · 0 评论 -
测试人生 | 二线城市年薪30W+,疫情之下涨薪超过100%,是怎么做到的?
课程内容很多,而且都是全新知识,刚开始我一度跟不上课程节奏,但是在保证直播课的情况下慢慢地补回来,这里提示下直播课第一次一定要跟着上课,回放的效果真没有现场的效果好。后来发现继续这样下去,自己的技能点太低,会被逐渐淘汰,没有竞争的能力。2.Shell常用命令:问到了基本的常用命令,比如性能相关的常用命令和指标的含义,咱们课程都是有的,只要好好刷录播,这些问题都难不倒你。4.性能测试:基本都会问到有没有做过性能测试,你们公司的性能测试指标有哪些,工作中如何去做的,用的什么工具等等,这块也是加分项。原创 2022-09-06 14:16:30 · 77 阅读 · 0 评论 -
技术分享 | 如何使用代理配置快速定位接口测试脚本问题?
在调试接口用例过程中,如果响应结果和预期结果不一致,则需要检查请求信息。通过代理获取自动化测试中的请求响应信息,对比与正常请求响应的区别,就能够更直观的排查请求错误,相当于编写代码时的 debug 功能。在自动化测试中,不论是 Java 版本还是 Python 版本,均可以通过设置代理来监听自动化测试脚本的请求响应信息。通过proxies参数,监听请求与响应信息。原创 2022-09-06 14:13:32 · 108 阅读 · 0 评论 -
基于TensorFlow Serving的YOLO模型部署
迁移训练后的模型需要部署到生产环境,TensorFlow Serving是一种模型部署方法,只需几行简单的代码就可以维护模型的整个生命周期。YOLOV3 tensorflow版本保存的模型格式是ckpt格式,tensorflow serving需要的格式是savedmodel格式,因此需要进行模型格式转换。由于tensorflow有些组件是懒加载模式,因此第一次请求预测会有很严重的延迟,为了降低懒加载的影响,需要在服务初始启动的时候给一些小的请求样本,调用模型的预测接口,预热模型。原创 2022-09-06 11:55:06 · 251 阅读 · 0 评论 -
测试人生 | 三十而立终圆大厂梦,测试开发开启新征程
面试前,一位资深大佬告诉我一个公式:面试成功=技能+机遇+气场+反应能力+亲和力我觉得很中肯,同时也感慨进大厂是天时地利人和缺一不可,着实不易。说了那么多,来点面试题干货吧。项目经验:自己做的项目一定弄透,以及这个项目中遇到的问题,怎么解决的,涉及的难点,介绍的时候要说,尽可能突出自己;自动化测试:问语言,设计理念,稳定性,价值最大化,人力成本等;框架工具原理:Selenium的原理,Appium的原理;原创 2022-09-05 14:12:52 · 417 阅读 · 0 评论 -
聊聊后端Web开发框架(Python)的简单使用
后端web开发框架就先介绍到这里,大家可以试着做一下练习,我们后面会讲数据持久化技术,请持续关注哦~Flask 是一个使用 Python 编写的轻量级 Web 应用程序框架。原创 2022-09-05 13:51:19 · 307 阅读 · 0 评论 -
技术分享 | 接口自动化测试,如何实现多套环境的自动化测试?
上面的方案虽然将 url 参数与用例实现了解耦,但是随着项目版本的快速迭代,接口会越来越多,在多个测试脚本文件中都要设置这个 envs 环境配置。使用一套接口测试脚本,通过切换域名地址配置,实现多套环境的自动化测试。针对以上的问题,可以把域名统一放在 env 配置信息中进行管理,然后将请求结构中的 url 地址替换成 env 配置文件中对应环境的 url 地址。因此,就需要将环境配置信息 envs 存储到 envs.yaml 文件中,然后在测试脚本中定义读取 yaml 信息的函数,在需要的地方调用即可。..原创 2022-09-01 10:41:30 · 95 阅读 · 0 评论 -
技术分享 | 接口自动化测试如何进行认证?
在 HTTP 中,基本认证是允许使用 HTTP 协议的用户在请求时,提供用户名和密码的一种方式。,该凭证是用户和密码的组和的 base64 编码。碰到这种类型的接口,使用 Java 的 REST Assured 或者 Python 的 Requests 均可解决。方法完成用户名密码的验证,第一个参数输入用户名,第二个参数输入密码。...原创 2022-08-30 09:48:56 · 219 阅读 · 0 评论 -
书单 | 测试工程师必读经典好书,你读过几本?
测试好书1080×480 46.3 KB软件测试入行容易进阶难。在持续交付体系背景下,要成为测试开发高手意味着非常系统综合的知识储备。广泛阅读经典好书是快速成长的必要方式。霍格沃兹测试学院重点推荐几本测试经典好书以及必读清单。文末加入测试开发读书群,一起交流探讨!测试开发从入门到进阶经典书籍【测试入门基础】夯实软件测试基础技术和理论知识,以及 Linux/Python/Java 编程技能;《软件测试》https://book.douban.com/subject/1801050/ 839《原创 2022-08-29 16:43:30 · 888 阅读 · 0 评论 -
技术分享 | App常见bug解析
功能Bug内容显示错误前端页面展示的内容有误。这种错误的产生有两种可能1、前端代码写的文案错误2、接口返回值错误功能错误功能错误是在测试过程中最常见的类型之一,也就是产品的功能没有实现。比如图中的公众号登录不成功的问题。界面展示错乱产品界面上的元素展示重叠(如下图),这类型的错误一般是前端代码问题。界面展示后台信息前端页面展示了不应该出现的后端日志信息(如下图),这类的错误一般是由于后端服务错误导致。推送信息错误推送消息中包含了不正确的内容(如下图),此类问题一般是后端服务错误导致的。崩溃崩溃是 app 很原创 2022-08-29 13:40:42 · 415 阅读 · 0 评论 -
接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
本文霍格沃兹测试学院学员学习实践笔记,进阶学习文末加群。一、应用背景因为本章的内容是使用jq工具配合完成,因此在开始部分会先花一定的篇幅介绍jq机器使用,如果读者已经熟悉jq,可以直接跳过这部分。先来看应用场景,App 经常会有一些信息展示的列表页,比如商家的菜品、股票的公司、文章的列表展示等,例如下面这样:菜品不够吃的话~不是,是菜品数量较少不够测试的量,假如我们想要测试几百个菜品时,会不会在刷的时候是否有性能影响,展示是否正常,列表展示的边界值测试等;而要测就得有数据展示,这个时候要是通过后端去找或者造原创 2022-08-26 11:50:55 · 179 阅读 · 0 评论 -
40+的年龄50W+的年薪,2线城市入职名企,他曾想放弃测试?
本文为霍格沃兹测试学院优秀学员笔记,测试开发进阶学习文末加群。本人就读于西南某一本重点大学,毕业后这十几年主要从事软件测试相关的工作,在早些年,主要还是以功能测试为主,对自动化、性能都不是特别了解。前两年因个人原因出来找工作,发现市场上很多公司都需要测试开发,而不是普通的测试。几乎每个公司都要考察自动化测试开发相关的知识,ui 自动化,接口自动化都会问得很细,有的还会问有没有开发什么工具,自己完全答不上来。因为之前很少做相关的工作,基本上还是停留在做手工测试上,经过几次面试的蹂躏,感觉自己落伍了,甚至有一些原创 2022-08-24 15:08:37 · 212 阅读 · 0 评论