51Testing软件测试网

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿(3)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2021年6月 (1)
  • 2021年3月 (1)
  • 2020年9月 (1)
  • 2020年3月 (1)
  • 2020年1月 (2)
  • 2019年12月 (3)
  • 2019年11月 (5)
  • 2019年10月 (1)
  • 2019年9月 (2)
  • 2019年8月 (14)
  • 2019年7月 (20)
  • 2019年6月 (15)
  • 2019年5月 (12)
  • 2019年4月 (19)
  • 2019年3月 (20)
  • 2019年2月 (9)
  • 2019年1月 (16)
  • 2018年12月 (17)
  • 2018年11月 (21)
  • 2018年10月 (16)
  • 2018年9月 (20)
  • 2018年8月 (22)
  • 2018年7月 (3)
  • 2018年6月 (1)
  • 2018年5月 (7)
  • 2018年4月 (1)
  • 2018年3月 (3)
  • 2018年2月 (6)
  • 2018年1月 (2)
  • 2017年9月 (8)
  • 2017年8月 (28)
  • 2017年7月 (3)
  • 2016年11月 (1)
  • 2016年6月 (1)
  • 2016年4月 (1)
  • 2016年2月 (2)
  • 2015年7月 (1)
  • 2015年5月 (1)
  • 2015年4月 (2)
  • 2015年3月 (1)
  • 2015年2月 (2)
  • 2015年1月 (6)
  • 2014年12月 (3)
  • 2014年11月 (3)
  • 2014年10月 (3)
  • 2014年9月 (2)
  • 2014年8月 (8)
  • 2014年7月 (16)
  • 2013年12月 (5)
  • 2013年11月 (1)
  • 2013年10月 (3)
  • 2013年9月 (2)
  • 2013年8月 (2)
  • 2013年7月 (3)
  • 2013年5月 (1)
  • 2013年4月 (2)
  • 2013年3月 (2)
  • 2013年2月 (3)
  • 2013年1月 (4)
  • 2012年12月 (4)
  • 2012年11月 (4)
  • 2012年10月 (3)
  • 2012年9月 (4)
  • 2012年8月 (3)
  • 2012年7月 (4)
  • 2012年6月 (2)
  • 2012年5月 (2)
  • 2012年4月 (1)
  • 2012年3月 (2)
  • 2012年2月 (2)
  • 2012年1月 (1)
  • 2011年12月 (3)
  • 2011年11月 (2)
  • 2011年10月 (1)
  • 2011年9月 (4)
  • 2011年8月 (3)
  • 2011年7月 (2)
  • 2011年6月 (4)
  • 2011年5月 (4)
  • 2011年4月 (2)
  • 2011年3月 (4)
  • 2011年2月 (4)
  • 2011年1月 (7)
  • 2010年12月 (7)
  • 2010年11月 (5)
  • 2010年10月 (4)
  • 2010年9月 (7)
  • 2010年8月 (7)
  • 2010年7月 (3)
  • 2010年6月 (3)
  • 2010年5月 (4)
  • 2010年4月 (4)
  • 2010年3月 (5)
  • 2010年2月 (3)
  • 2010年1月 (4)
  • 2009年12月 (3)
  • 2009年11月 (3)
  • 2009年10月 (1)
  • 2009年9月 (3)
  • 2009年8月 (2)
  • 2009年7月 (3)
  • 2009年6月 (1)
  • 2009年5月 (2)
  • 2009年4月 (4)
  • 2009年3月 (5)
  • 2009年1月 (1)
  • 2008年11月 (2)
  • 2008年7月 (5)
  • 2008年6月 (4)

文章分类

  • 行业资讯(45) (rss)
  • 软件业务知识(43) (rss)
  • 软件开发知识(33) (rss)
  • 软件测试工具(39) (rss)
  • 软件测试技术(157) (rss)
  • 软件测试管理(40) (rss)
  • 软件测试职业发展(57) (rss)

51testing软件测试网

搜索

  •  

最新评论

  • 1. re: 淘宝后台技术大揭秘,不看这篇你双十一要损失几个亿!
  • 关注官方公众号“Atstudy网校”,点击中间菜单栏“双11”,领取双十一技术内幕资料。
  • --51testing
  • 2. re: 软件测试流程的一点感悟
  • 提交缺陷时只需要描述现象即可,过多的分析可能会误导开发
  • --凡客诚品
  • 3. re: 软件测试流程的一点感悟
  • 阿达宿建德江阿斯顿
  • --凡客礼品卡
  • 4. re: 手机软件测试的经验总结
  • 很好啊~不错
  • --乐蜂网
  • 5. re: 手机软件测试的经验总结
  • 很好啊~
  • --罗莱家纺

阅读排行榜

  • 1. 软件测试流程的一点感悟(1090)
  • 2. 5年经验之谈:月薪3000到30000,测试工程师的变“行”记!(939)
  • 3. 测试自动化及软件测试工具的比较(856)
  • 4. 银行线上信贷系统如何做好接口测试?手把手教你接口工具Postman(825)
  • 5. 软件为什么要做异常测试?测试员必知的22个测试点总结!(806)

评论排行榜

  • 1. 软件测试流程的一点感悟(4)
  • 2. 软件测试的原则和经验 (4)
  • 3. 嵌入式软件测试技巧(2)
  • 4. 手机软件测试的经验总结 (2)
  • 5. 常用软件测试工具的分析与比较(1)

Powered by: 博客园
模板提供:沪江博客
IT博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

常用HTTP抓包工具Fiddler使用的12个小技巧,值得收藏!

说起抓包,很多人以为就是用个工具,简简单单地抓一下就可以了。昨天在面试一个安卓逆向,直接告诉我“抓包没有技术含量”。

在这里,我必须发一篇技术文,解析一下抓包神器——Fiddler。

Fiddler仅仅是一个抓包工具?不好意思,Fiddler用得好,真的可以为所欲为。

Fiddler的介绍

①Fiddler是强大的抓包工具,它的原理是以web代{过}{滤}理服务器的形式进行工作的,使用的代{过}{滤}理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。

②代{过}{滤}理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代{过}{滤}理服务器会将数据包进行拦截,代{过}{滤}理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代{过}{滤}理服务器也会将数据拦截,再返回给客户端。

③Fiddler可以抓取支持http代{过}{滤}理的任意程序的数据包,如果要抓取https会话,要先安装证书。

技巧一: 全新安装 Fiddler

默认下,Fiddler 不会捕获 HTTPS 会话,需要你设置下,打开 Fiddler Tool->Fiddler

Options->HTTPS tab

选中 checkbox,弹出如下的对话框,点击"YES"

点击"Yes"后,就设置好了

技巧二:Fiddler 连接手机代理配置:

1) 依次打开 Fiddler->Tools->Fiddler Options 在【Connection】面板里将 Allow remote computers to connect 勾选,设置端口号【默认为 8888,可修改其他端口号】;点击【OK】按钮,关闭 Fiddler 并重新打开 Fiddler。

2) 得到本机 IP 用于手机端配置,windows->运行->cmd->ipconfig;得到本机 IP简便获取本机的 IP 有俩种办法:

①鼠标放置在 fiddler 右上角的 Online,就会显示本机的 IP、Host 等一些信息,如下图

②点击 windows->运行->cmd->ipconfig;得到本机 IP

3) 手机端配置:代理设置更改为【手动】,输入【代理服务器主机名】(对应 PC 端的 IP 地址),输入【代理服务器端口号】(Fiddler 配置的端口号)

4)全部配置完毕,现在用手机打开助手,就能在 Fiddler 中监听到手机发送的请求

技巧三:Fiddler 的基本界面

nspectors tab 下有很多查看 Request 或者 Response 的消息。其中 Raw Tab 可以查看完整的消息,Headers tab 只查看消息中的 header.如下图

技巧四: 启动 Fiddler 后 后 Response 是乱码,怎么办?

有时候我们看到 Response 中的 HTML 是乱码的,这是因为 HTML 被压缩了,我们可以通过两种方法去解压缩。

1、点击 Response Raw 上方的"Response is encoded any may need to be decoded before inspection. click here to transform"

2、选中工具栏中的"Decode"。这样会自动解压缩,解压后重启就可以了

技巧五:QuickExec命令行的使用

Fiddler 的左下角有个命令行工具叫做 QuickExec,允许你直接输入命令。

常见的命令有:

help:打开官方的使用页面介绍,所有的命令都会列出来

cls:清屏

Select:选择会话的命令

?.png:用来选择 png 后缀的图片

bpu:截获 request

技巧六:Fiddler中创建 AutoResponder规则

Fiddler 的 AutoResponder tab 允许你从本地返回文件,而不用将 http request 发送到

服务器上

看个实例.

1、进入助手首页,把 serverconfig.html 连接保存到本地桌面,选中该条请求,右键—>copyàJust Url

2、选中该条请求,点击右侧选择 AutoResponder,点击 Add Rule,把该条请求添加进去,或者把这个会话拖到 AutoResponer tab 下

3、选择 Enable automatic reaponses 和 Unmatched requests passthrough

4、更改本地保存的配置文件,在下面的 Rule Editor 下面选择 Find a file...选择本地保存的图片.最后点击 Save 保存下

5、重新首次进入助手,查看 serverconfig 返回的数据中就是自己修改的

技巧七:Fiddler中如何过滤会话

每次使用 Fiddler,打开一个网站,都能在 Fiddler 中看到几十个会话,看得眼花缭乱。最好的办法是过滤掉一些会话,比如过滤掉图片的会话。Fiddler 中有过滤的功能,在右边的 Filters tab 中,如下图就是只显示带有 zhushou.sogou.com 的请求

技巧八:Fiddler中提供的编码小工具

点击 Fiddler 工具栏上的TextWizard,这个工具可以 Encode 和 Decode string.

技巧九:Fiddler中查询会话

用快捷键 Ctrl+F 打开 Find Sessions 的对话框,输入关键字查询你要的会话。查询到的会话会用黄色显示

技巧十:Fiddler中保存会话

有些时候我们需要把会话保存下来,以便发给别人或者以后去分析。保存会话的步骤如下:

选择你想保存的会话,然后点击 File->Save->Selected Sessions

CustomRules.js

CustomRules.js 中的主要方法:

Static function OnBeforeRequest(oSession:Session)//在这个方法中修改 Response 的内容,

Static function OnBeforeResponse(oSession:Session)

//在个方法中包含 Fiddler 命令。在 Fiddler 界面中左下方的 QuickExec Box static

function OnExecAction(sParams:String[])

实例:修改sogouid

① 在菜单栏中点击 Rules—》CustomRules,打开 CustomRules.js 脚本

② 添加如下脚本,()里面写上接口名字,url 中填上请求数据

③ 更改你想要改的 sogouid 就可以

把这段脚本放在 oSession.uriContains()方法下,并且点击"Save script",这样该条接口下的 sogouid 就会变成自己更改的 id

if(oSession.uriContains("install.html?")){

oSession.url="mobile.zhushou.sogou.com/m/install.html?uid=d15449c17bbded35c989736

70c1e1e0c&vn=3.11.2&channel=sogouinputgx&sogouid=e9ed8a54201e5481e20f6760804772c3&stoken==IhTefovaz0ppdInTQxRlnQ&cellid=&sc=0&iv=311";

技巧十一: 修改session 在 Fiddler 的显示样式

把这段脚本放在 OnBeforeRequest(oSession:Session)方法下,并且点击"Save script",这样所有的 cnblogs 的会话都会显示绿色。

if (oSession.uriContains("mobiletoolhit.gif?")) {oSession["ui-color"] = "green";}

技巧十二: 如何在Fiddler Script中修改 Request中的body

方法一:

Static function OnBeforeRequest(oSession:Session) {

if(oSession.uriContains("http://www.cnblogs.com/TankXiao/")) {

//获取 Request 中的 body 字符串

Var strBody=oSession.GetRequestBodyAsString();

//用正则表达式或者 replace 方法去修改 string

strBody=strBody.replace("1111","2222");

//弹个对话框检查下修改后的 body

FiddlerObject.alert(strBody);

//将修改后的 body,重新写回 Request 中

oSession.utilSetRequestBody(strBody);}}

方法二:

提供一个简单的方法,可以直接替换 body 中的数据

oSession.utilReplaceInRequest(“ 1111”,“2222”);

post请求模拟

测试时如果客户端的数据出错,可能需要单独对某个 url 进行请求,看返回数据是否正确,通过客户端再去请求有时需要复杂的环境需求,整一次挺费劲,通过单独的请求看数据是否正确可以节省一些时间,当然 get 请求可以直接用浏览器就能看到返回数据了,post 数据由于有 body 数据,需要借助工具才行,fiddler 的 composer 功能就是为此而生的,如下图,在上方填写 url,选择请求方式,在下方的 body 中添加 post 的数据后,点击execute 就是请求了,在通过 inspectors 就能看到本次模拟请求的返回值了。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660
posted @ 2019-07-02 18:08 51testing 阅读(91) | 评论 (0) | 编辑 收藏
 
人脸识别黑科技正式入侵,消亡还是苏醒?人工智能测试势不可挡!

摘要:当前,人脸识别技术已经在诸多领域取得广泛应用,但其风险也一直为外界关注,尤其是对风险容忍度较低的金融行业来说,用户验证环节如果出现漏洞,就可能造成巨大损失。本文将以一个项目实例出发,分享在测试人脸识别技术时遇到的问题和取得的经验,并对如何测试人工智能提出几点思考。

人脸识别技术测试实例——从一个项目谈起

近期,我司测试部门在承接某项目时,发现了该项目在用户活体验证出现的一个业务安全漏洞。活体验证是该项目服务流程中的一个必经步骤,验证的方式是由用户以手机设备录制阅读随机数字的视频,与后台人脸数据比对后,判断当前操作用户是否为本人。在此环节,测试人员发现,通过在电子设备上进行图片翻拍和视频翻拍,非本人也同样能够通过该验证。随后,项目组联系活体验证技术提供方,调整相关参数,又进行了人脸识别的专项测试,但在该专项测试中仍有一定比例的静态图片攻击成功,骗过模型。鉴于测试结果,项目组经过研究讨论,决定该项目延期投产,集中解决人脸识别模型相关问题。

常用人脸识别/活体检测技术简介

人脸识别是人工智能领域应用较为广泛,发展也相对成熟的技术。静态的图片人脸识别安全性较低,因此多采用活体检测技术,下面对常见的活体检测技术进行介绍。

动作配合式活体检测:算法给出随机动作指令,用户配合完成动作,如点头、眨眼、摇头、唇语等,该类算法当前应用最为广泛。

静默活体检测:顾名思义,相较动作活体检测,静默活体检测不需要用户进行配合动作,而是让用户正对着摄像头几秒即可完成检测,其检测的要素包括了眼皮和眼球的律动、面部肌肉的收缩等。

红外活体检测:即利用红外成像原理进行活体检测,该算法安全性较高,但需要额外配置红外摄像头。

3D结构光活体检测:能够根据反射光线识别3D的人脸结构,安全性较高,但需要深度图像镜头模组配合,目前只在部分高端旗舰手机上有所配置。

常见人脸识别攻击方式简介

在对人脸识别/活体验证环节的测试过程中,测试人员尝试了多种攻击方式,从介质上分类,基本的思路包括图片攻击和视频攻击。

图片攻击:即以静态图片欺骗人脸识别算法,应用于静态图片人脸识别。图片展示介质包括了电子屏幕(考虑不同分辨率,不同成像原理的电子屏幕),纸质图片(彩色和黑白)等。

图1基本的照片攻击方式,看看我是谁?

视频攻击:翻拍或制作视频以欺骗人脸识别算法,主要用来对动作配合式活体检测进行攻击。最直接的攻击方式为播放对应客户本人预先根据指令而录制的短视频,但现实中伪造成本较高。随着图像处理技术、人工智能技术的发展,出现了一些根据静态照片生成动态视频的软件,仅需要一张人像照片,就可以生成该人像摇头、点头、眨眼,甚至阅读各种文字口型的视频。

图2使用软件生成了彦祖读一串数字的视频,右下为原图

考虑上述两种攻击方式,准备的影像素材通常需要依赖电子屏幕作为介质进行输出,这就可以通过识别摩尔纹等方式进行判别。而单纯的静态图片人脸识别应用场景也较少。下面介绍两类进阶的攻击方式。

实体攻击:该攻击方式的形式较为多元化,主要思路是避免将电子屏幕或者单纯的平面照片作为验证图像展示方式。例如,打印一张人体照片,将照片按照一定弧度弯折,配合活体验证指令活动,对于向眨眼这样的指令,可将照片的眼部图像减掉,非本人的真人在后方配合眨眼。而较为高级的攻击方式还包括了制作3D脸部模型等。

图3半张脸攻击

图4扣嘴攻击

应用破解/注入攻击:该攻击方式需要一定技术手段,思路包括埋点监测人脸识别触发流程,修改程序绕过该步骤,或抓包后重组数据报文,将前述图片攻击和视频攻击中准备的影响不通过其他介质转录,直接发送给后台,以及修改报文中的阈值等关键指标后再进行检验等。

浅谈如何测试人工智能软件

人工智能软件的测试,可以分为两个部分:一,对软件的测试。二,对算法的测试。而本次测试的特殊性就在于对算法的测试。

对于测试人员来说,由于当前最广泛应用的深度学习算法(神经网络)是一种黑盒算法,测试人员难以像传统的功能测试一样提出规则性的功能缺陷,且缺陷难以稳定复现,因此测试人员最终所提供的测试结果往往是提供正向及反向用例的通过率,作为参考。

尽管算法的开发人员在建模时就需要输入大量的训练集与测试集,同时也需要评估大量的模型相关指标,但测试工作仍然是不能缺位的:开发人员更注重模型的正向通过率,而对多样性的反向场景设想不足。这就需要测试人员发挥想象力,提供更多反向场景。其意义在于,一方面对于算法较易失效的场景采取更加针对性的模型训练。另一方面,即便是黑盒的神经网络算法,也能够根据反向用例反推模型各个路径的权重,对模型参数调整提供参考。

另外,对于人脸识别算法,通常还要关注模型相似性阈值,即相似度大于X%后判定通过。该值过高,则增加了攻击通过的风险,该值过低,则会造成正向通过率偏低,影响正常用户体验。而采用何种阈值,还需要项目组权衡了风险和收益之后,综合考虑后决定。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-06-28 17:48 51testing 阅读(94) | 评论 (0) | 编辑 收藏
 
谁说Python找工作难?人生苦短,Python工程师你们还好吗?

前几天看到某网站看到有人提了这么个问题,Python这么火,为啥找工作这么难呢?

近几年人工智能的发展确实推动了Python的热度,Python出现在了中小学课本,产品经理、运营等非程序员职业都认识到了Python这门语言的重要性,甚至有些非互联网行业的员工都跟风的学起了Python,你一定会问,Python凭什么这么火?人工智能出现前Python有这么火吗?

我们先不拿Python与Java、C这些老大哥做比较,因为差距确实是存在的,但从这两年的各大榜单的编程语言排名数据来看,它确实稳居前几名,而且趋势越来越猛,直逼编程语言的头号老大,令人意想不到的是曾经风靡一时的Perl、Ruby 似乎在一点点淡出我们的视线。

但不可否认,很多在编程界摸爬滚打数十年的技术大牛依然保持本心,无论是Perl、Ruby、go、PHP、Java、C还是现在热门的Python,都有其忠实的追随者,无论时代如何改变,初心不变。

时代在变化,市场经济有周期轮回,编程语言又何尝不是呢?

有人说Python现在是大牛市,现在科技前沿都在用Python,它是最先进的生产力;

有人说算法是独立于语言的,我周围搞科研的,没有见谁用Java做算法的,做工业级产品需要大量码农搬砖,Java啰嗦但是可靠性高,搞算法研究的代码绝对比做软件产品的规模小得多,没必要用Java,Python足矣;

有人说python目前火是因为广泛用于人工智能,而人工智能是需要有数学基础的,这可能是与其他语言的差别之处;

有人说搞人工智能,需要有学历,资历,能力当基础。你光会语言,有啥用?你没研究生学历,根本没有这种工作机会,没有机会哪来实际经验;

有人说这些语言我都不看好,还是go语言未来有发展;

有人说还是学C吧,不用担心过时;

有人说Python中国要的少,想继续追高估计有点难了,大多数企业都招Java和C++……

反正每个人都各执己见,你根本无法去判断谁对谁错,因为每个人都有自己偏爱的语言。

那Python之前火吗?

其实在技术圈Python很早就广为人知了,特别适用于做 MVP(最小可行性)产品,运用在创业初期的产品开发,同时在测试、运维、科研等领域也被广为使用。我们熟悉的社交应用Instagram、流量全球第4的社交新闻站点Reddit、云计算管理平台OpenStack以及企业ERP管理平台Odoo等,都是早期用 Python 开发出来的明星产品。

近几年又因人工智能的热潮,Python爱好者借势将Python推向了一个新的高度,就连教育部门都开始重视Python,促使很多人跟风效仿。于是他们产生了这样的错觉:用三四个月的时间学会Python就可以轻松找工作。然而他们并不知道,学会和实践之间差了时间和努力!

百度搜索指数里,Python搜索指数从2011年开始一直是平滑增长,从2017年开始超过Java,而Java基本没啥变化,甚至有下降的趋势。

很多Java、C语言爱好者看到这样的数据会慌会气愤,其实他们不知道,大部分Python开发者掌握的第一门语言都不是Python,可能他们之前就掌握了Java、C++等其他语言和计算机相关的理论知识,而对于他们来说,学Python自然是轻车熟路,只是工作碰巧遇到了Python。

Python 虽然看起来简单,但是用好不容易,特别是大规模的团队对 Python 的要求就更高了,你去市场上去看,一般招Python都是要求有一定经验的。

总结下Python找工作,你可能会遇到的问题(以下来源于学生的真实反馈):

一、一学就会,一写就懵。

学过 Python 的同学,肯定都学习过列表、元组,如果是通过Atstudy网校教程的话,肯定都学习过列表和元组的访问、修改和删除操作。

不知道有多少人还记得第一次看这部分内容的感觉,反正我的感觉是「很简单嘛,和想象中差不多」,那几个操作已经很熟悉了。

有一次我在处理一个字符串拼接,我是用的元组,然后我 append 半天,总是报错,我记得很清楚呀,我学习的时候明明是有这个方法的呀,为什么就是不行呢?

等我回去仔细一看,嘿,append 竟然是列表的方法,这知识点简单么?忒简单了,可以信手拈来么?不行。

举例这个已经是最简单的部分了,类似的我还在多个元素拼接上吭哧过半天,才发现元组必须和元组类型进行拼接,不然也是报错。

如果需要两个元组拼接后不是合成一个元组,而是形成一个新的复合型元组,那就更要纠结一会了。

看完我上面说的是不是觉得很简单,请动手写一写,或者回忆下自己当初是怎么解决这些问题的。

古人云「看书如流水,编码如便秘」,甚是。建议解决方案:多动手实操练习,真的能熟能生巧噢。

二、原样照抄我会,稍加变通就懵逼。

我之前很多的脚本都是 python2.6 写的,因为 py2 已经不更新了,所以我正尝试逐步改为 py3。

有一次我拿一个简单的脚本试试效果,脚本功能很简单,就是把一个PE文件内容使用文本方式读取出来,然后暴力搜索其中是否存在某指定字符串,并得出搜索结果。

py2读取文件内容的写法是:

def test_readfile2(filepath):

"""读取文件内容

Args:

filepath:目标文件全路径

Returns:

context:读取到的文件内容

"""

with open(filepath, 'r') as obj:

context = obj.read()

return context

同样的写法,在 py3 中执行会报错:

UnicodeDecodeError:'gbk'codec can't decode byte 0x90 in position 2: illegal multibyte sequence

根据之前弱弱的经验,一看也知道是编码的问题,但是我反复的 encode 或者 decode,都是无济于事。

明明知道是很简单的问题,但就是搞不定,那种无奈,实在是很无奈。

一次偶然的机会,终于知道了解法,方法果然很简单:

def test_readfile3(filepath):

"""读取文件内容

Args:

filepath:目标文件全路径

Returns:

context:读取到的文件内容

"""

with open(filepath, 'r', errors='ignore') as obj:

context = obj.read()

return context

仅仅是加了一个参数 errors,一切都搞定了,是不是有种豁然开朗的感觉。

建议解决方案:只有自己亲自踩过的坑才是真的坑,一定要多动手实操练习,了解每一种变通的可能。

三、基本用法会,稍微进阶就懵逼。

用 Python 写 GUI 的同学,应该有部分是使用的 wxPython 这个库,反正我是用的这个。

如果只是写个主界面,大家都会定义一个主窗口类,比如 MainClass 之类的,其他控件也可以按教程一步步操作实现。

有次我需要在主界面之外加一个设置窗口,同时设置项更新后,主界面要立刻响应。

这个响应函数我是写到主窗口的类里面的,搞了半天,我就是不知道怎么在子窗口类中调用父窗口类里面的方法,网上也搜了很久,就是没找到有类似的问题以及解决方案。

明明知道是很简单的问题,但就是搞不定,那种无奈,实在是很无奈。

后来仔细看了网上的一些实现的例子,发现可以在父窗口类中把 self 作为参数传递给子窗口,子窗口再通过这个self 来进行父窗口类中方法的调用,完美解决。

同样的回过头看看解决方法,真的是很简单,而且也确实给人豁然开朗的感觉,但这又明明就是一个稍微进阶了一下的基本用法而已。

不动手时不知道自己有多弱,上手后才追悔莫及。

建议解决方案:多动手实操练习,每一个遇到的问题,都是自我进阶的阶梯。

总结:

有人问独孤求败,君子剑和青锋剑哪个好?

独孤求败说,这些不重要,只要技术到了,拈花飞叶皆可伤人。

杨过和郭靖武功天下卓绝,然而武林中绝大多数人表示:

“前辈,哪个门派能招一大拨杨过、郭靖和独孤求败?”

编程语言的竞争也是如此,就Java和Python来说,Java语言的特性决定了一门新手和老手写出来的代码差距不会太大(这里肯定有人不会同意),而 Python 的代码虽然简单,但不同的人写出来的代码千差万别。

至于Python这么火,为什么你还找不到工作?我想说Python这门语言确实是有前途的,这两年大家都在给Python疯狂打Call,让Python成为所谓的第一语言,大家都在学,一个大胆的猜测就是未来 Python 将会像英语一样成为大家必备的一个技能。

但是如果你现在啥都不会,只会Python,你去找工作的确有点困难,当然并不见得学Java找工作就容易了,最主要的还是对整个计算机体系的掌握,语言作为工具只是很小的一部分。

欢迎加入 51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-06-27 18:16 51testing 阅读(79) | 评论 (0) | 编辑 收藏
 
【用例设计】如何写一份漂亮的测试用例?常见7大方法总结
     摘要: 软件测试的同学肯定都写过测试用例,但是如何写出一份高质量的测试用例呢?测试用例有哪些方法呢?为什么要写测试用例呢?第一:为什么要写测试用例?在版本转测试之后,我们测试的基础是什么?如果没有测试用例,我们应该怎么展开测试?怎么样保证测试点不遗漏、而且不人力投入不重复、怎么样追溯我们的测试质量?如果没有测试用例,这些工作可能都无法开展, 所以测试用例是测试的根基,可以让我们的测试活动从不可控的状态变成...  阅读全文
posted @ 2019-06-26 17:41 51testing 阅读(193) | 评论 (0) | 编辑 收藏
 
手把手教你测试微信小程序,附软件测试员必知的20个常见测试点

普通的移动app是需要安装的,但是绝大部分的app不会经常使用,但仍然会占用手机存储空间,所以开始出现免安装app,微信小程序实际是一种免安装的app。类似的比如华为、小米等手机厂商推出的快应用、支付宝小程序。微信小程序实际是运行在微信之上。


小程序的类网页经过微信翻译之后以http数据的形式和服务器进行交互。小程序无法脱离微信来进行使用。


微信小程序的页面可以包含:

1、小程序页面(WXML+WXSS)

2、M页页面(H5移动网页)

3、toast信息(过一段时间会自动消失的信息,比如登录成功的提示信息,1、2秒后自动消失)

4、弹窗

微信小程序功能测试

微信小程序分为三个版本:

1、开发版

2、体验版(需要在小程序管理平台里添加体验用户才可以使用)

3、正式版

微信小程序界面的操作的测试,跟移动app、web网站没什么区别。


开发者工具测试(开发版)

通过AppData可以比界面检查的更细。类似于fiddler中inspectors。


借助于真机调试,可以修改AppData中的数据,对微信小程序做一些大值测试或者异常测试。


扫码后



通过修改真机调试界面中AppData中的数据可以实现和fiddler中autoresponder类似的功能,检查各种数据的情况下界面的显示。

因为微信小程序是运行在微信之上的,所以各种功能交互更多是微信考虑处理,测试微信小程序时可以不用太考虑。

Fiddler工具测试(体验版/正式版)

对于体验版或者正式版,可以完全类似于移动app的测试方式,利用fiddler来做测试。

使用步骤:

1、电脑上的fiddler设置抓取和解析https的包

2、手机上安装fiddler的证书

3、手机上开启代理

运行小程序后,即可以在fiddler上看到抓取的https的包。

微信小程序性能测试

移动app的性能测试关注:

1、业务响应时间(启动时间/页面切换时间),通过logcat中查询displayed关键字

2、Cpu,emmagee

3、Gpu,过度绘制、高速相机

4、内存,emmagee

5、流量,emmagee

6、电量,emmagee

微信小程序因为一般运行的时间短、频度低,所以关注的性能指标比app要少一些。

1、业务响应时间(小程序包下载时间/启动时间/页面切换时间)

2、内存

3、Cpu

4、帧率

5、数据缓存大小

微信小程序针对开发版提供性能监控器工具。


打开后,重启小程序


通过展示出来的性能数据,我们能够直观的看到实时的性能,比如切换页面时的页面切换耗时。如果想要看性能的整体的长时间变化趋势,则需要借助trace工具。

1、在调试小程序的真机中操作导出trace数据(前提是开启性能监控面板)


2、开发者工具中选中trace工具


3、选择保存trace记录的手机(前提是adb能连接上手机)

4、选择前面导出的trace数据


Cpu变化趋势


Fps趋势(gpu绘制)


部分fps明显偏小,属于性能的bug。

内存趋势



其它


微信小程序兼容性测试

移动app的兼容性测试包含:

1、android版本的兼容,4.0、5.0、7.0

2、机型的兼容,hdpi、xhdpi、xxxhdpi

微信小程序的兼容性测试包含:

1、操作系统兼容性(兼容android系统和ios系统),android系统和ios系统对js代码的处理存在差异,所以需要考虑这两个系统的兼容性。实际工作中同一个小程序,需要在android微信上和ios微信上分别进行测试。

2、机型兼容性(屏幕的适配),微信小程序中考虑了屏幕的自动适配,专门设计了一个rpi单位,但还是不能完全保证适配没问题,所以针对小程序仍然需要考虑机型兼容。

3、微信版本的兼容性(基础库版本适配)



针对开发版,通过修改调试基础库版本即可做兼容性测试。

微信小程序网络测试

移动app 的网络测试考虑:

1、强网测试,不同网络下使用、网络切换下的使用

2、弱网测试

3、无网测试

微信小程序和移动app的网络测试类似。


微信小程序特殊测试点

1、小程序包大小不能超过3M,开发版对大小没有限制,但是体验版和正式版都有限制。

2、页面层级跳转不能超过10次,比如分类-》居家-》布艺软装-》居家-》被枕-》居家-》。。。达到10次就无法跳转了,如果非要有这种跳转方式,需要考虑不让微信觉得是10次跳转。

3、缓存,微信小程序为了提升用户体验,会缓存用户的页面及数据,方便下次调用时直接使用。可能产生的问题:

1)微信小程序缓存的数据是否和服务器端一致。实际测试时可以先访问页面,然后修改服务器上数据,再回看小程序中页面,看数据是否一致。

2)切换相似的页面,看是否缓存的数据会产生混乱,比如居家和餐厨两个分类,切换分类的时候,会不会因为缓存导致具体信息不发生变化。


posted @ 2019-06-25 17:39 51testing 阅读(132) | 评论 (0) | 编辑 收藏
 
从苦逼到牛逼!2019年最全最新Linux运维工程师必备技能图谱……
     摘要: 运维工程师在前期是一个很苦逼的工作,在这期间可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎的琐事围绕着你,很难体现个人价值,渐渐的对行业很迷茫,觉得没什么发展前途。这些枯燥无味工作的确会使人匮乏,从技术层面讲这些其实都是基本功,对后期的运维工作会无形中带来一定的帮助,因为我也是这么过来的,能深刻体会到。所以在这个时期一定要保持积极向上的心态,持续的学习。在未来的某一天,相...  阅读全文
posted @ 2019-06-24 17:54 51testing 阅读(75) | 评论 (0) | 编辑 收藏
 
Python虽然很火,为啥找工作这么难?

前几天看到某论坛有人提了这么个问题,Python这么火,为啥找工作这么难呢?

这两年因为第三波人工智能热潮让 Python火了一把,让中小学生、非程序员(产品经理、运营)都加入到了学习Python的行列,那之前Python火吗?

虽然和Java、C这些大佬有差距, 但是它一直保持在前几位,并没有掉队,紧随大佬。而曾经很热门的 Perl、Ruby 似乎都淡出了我们的视线。

跟经济一样,语言也有周期,你可以认为Python现在是大牛市,想继续追高估计有点难了。在Python看起来还没今天那么火之前,它在技术圈其实就广为人知,特别适用于做 MVP(最小可行性)产品,运用在创业初期的产品开发,同时在测试、运维、科研等领域也被广为使用。早期用 Python 开发出来明星产品也不少,比如:Instagram、Dropbox、OpenStack、Odoo、Reddit、Quora等等,这些产品在2010年前就有了的。

而这两年又因为人工智能的火爆,教育部门对人工智能的重视,Python爱好者的借势,把Python推到了一个新的高度,这让很多人误以为学Python像学Java一样只要努力三四个月就能找到工作的错觉。

百度搜索指数里,Python搜索指数从2011年开始一直是平滑增长,从2017年开始超过Java,而Java基本没啥变化,甚至有下降的趋势。

说真的,大部分Python开发者的一门语言都不是Python,可能他们之前就掌握了Java、C++等其他语言和计算机相关的理论知识,而对于他们来说,学Python自然是轻车熟路,只是工作碰巧遇到了Python。

在国内,一个现实情况是大部分业务系统的开发,Python从来都不是主角,而是作为辅助工具在使用,可能是做个数据统计,弄些运维的脚本,写个测试脚本之类的,真正用 Python 来开发核心业务的公司少,叫得上名的除了豆瓣、知乎、饿了么、头条之类的公司之外,其他很少。大部分公司 Python 都是应用在一些非核心业务上。

这点跟 Java 是没法比的,Java 确实能做到一个0基础的小白认认真真在培训机构学几个月就可以放到工作岗位上去干活,但 Python 不行,Python 虽然看起来简单,但是用好不容易,特别是大规模的团队对 Python 的要求就更高了,你去市场上去看,一般招Python都是要求有一定经验的。

而招Java的岗位初中高级的都有。Java语言的特性决定了一门新手和老手写出来的代码差距不会太大(这里肯定有人不会同意),而 Python 的代码不同的人写出来的代码千差万别。

最后想说的就是,Python这门语言还是很有前途的,这两年大家都在给Python疯狂打Call,让Python成为所谓的第一语言,大家都在学,一个大胆的猜测就是未来 Python 将会像英语一样成为大家必备的一个技能。但是如果你现在啥都不会,只会Python,你去找工作的确有点困难,当然并不见得学Java找工作就容易了,最主要的还是对整个计算机体系的掌握,语言作为工具只是很小的一部分。

​欢迎加入51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ群 755431660


posted @ 2019-06-21 17:43 51testing 阅读(65) | 评论 (0) | 编辑 收藏
 
谁说“程序员离开电脑就是废物?”软件测试员第一个不服!

年少太轻狂,独闯IT行。愁丝根根落,眼圈黑茫茫。bug数万种,技能要擅长。三十而立时,无房单身郎。

忘了自我介绍了,我是一名软件测试员,做这行已经有5个年头了,平时习惯了找bug,写测试用例,只认真的码过技术文章,还是第一次想通过文字为自己的职业正名!

大多数人对IT行业的印象是人傻钱多,木讷,死宅男,屌丝,996,秃顶,格子衬衫,离开电脑什么都干不了,难以沟通的神秘物种……也许我这篇文章不能改变你对程序员的最初印象,但当你耐心读完你会发现,其实程序员还挺可爱的。


1、他们,不善言辞,但付出的都是真感情!

以前看过一档相亲节目,具体节目名我已经忘记了,但那位“特别”的男嘉宾我却一直记得,因为他和我一样是一名软件测试员,他不善于沟通,在节目中面对自己喜欢的女孩也不会表达爱意。在游戏环节,规则是这样的:被电脑抽中的男嘉宾可以在他喜欢的女孩身后做一个亲密的肢体接触动作,缘分也许就是这么说不清,他被选中了!很多台下观众都喊着去抱她,去牵她手,而他只是静静地站在喜欢的女孩身后,略显木讷,不知所措下他鞠了一躬,只跟那个女孩说了一句话:我愿意把我的工资卡给你,密码你来设!最后他的真诚感动了女孩,收获了爱情!

也许此时你会纳闷,这么简单的一句话,女神凭什么跟他走,但认真想想,如果一个人愿意把自己每个月加班加点赚来的辛苦钱毫无保留的给对方,就像小的时候你愿意把自己唯一一颗糖果给对方一样,他的感情是多么单纯,多么真实。

身为程序员的他不善言辞,不会甜言蜜语,每一个动作都傻里傻气,但在那个女孩心中,他赢了,她被他认真的可爱折服了!

2、他们,与电脑为伴,却自带无穷隐形技能!

每一位程序员都是“内裤外穿”的超人,他们飞不起来,不能打怪,没有超能力,无法拯救世界更不能说有多强大,但他们的能力是无穷的,而且只在关键时刻才会显现!

刚毕业那会,我孤身一人来到上海,在一家公司做性能测试,隔壁公司前台有一个非常可爱的姑娘,也是我暗恋着的女孩,但我嘴太笨,迟迟未能搭讪。刚巧,七夕那天我们公司和隔壁公司搞联谊,我和她就这样相识了!

她很开朗,一直找话题跟我聊天,我能感觉到她对我有几分好感,聊着聊着,讲到了他们公司的技术部门,她突然冒出一句:“程序员离开电脑就是废物”,虽然只是一句玩笑话,却深深的刺痛了我,因为她不知道,身为软件测试员的我,也和电脑打交道,也是一名容易被误解的程序员。那时的我,沉默了,不知如何反驳才能为自己的职业正名!

回到家,我只给她发了一条短信:“厨师离开锅就是废物,职业司机离开车就是废物,歌手离开话筒就是废物,教师离开学校就是废物,主刀医生离开手术刀就是废物……人和其他动物的最大区别,就是人懂得制造和使用工具。”虽然有些冷嘲热讽,但这是我对我热爱的IT行业最基本的尊重!


很多人对程序员的误解真的很深,究其根本,他们真正误解的东西其实就是专业化,谁说“程序员离开电脑就是废物”?我身边就有不少程序员,他们除了写代码,找bug等还有很多个人爱好:

小波是一名酷爱电子产品的软件测试工程师,同事经常让他帮忙挑选电子产品,他总会分享各种经验,说的头头是道。女生也经常找他修电脑,只要有他在,所有的电子产品都能很快恢复原貌。

阿威是我们公司的前端开发工程师,也是小有名气的健身达人,微博粉丝10几万,他的业余生活极其丰富,家里摆满了各种健身器材,与其说这是一种爱好,不如说是一种特长,如果不做程序员,他可能真的会去做私教。

作为一名专业测试开发工程师的晓峰,除了是万人羡慕的高薪技术大牛,还是业余音乐家,他会的乐器不止一两种,写歌填词也是他一直坚持的乐趣,其实很多程序员都有艺术天赋,因为写代码也是一种艺术,所以绝大部分程序员对艺术会有莫名的好感。

以上只是我身边的几个典型例子,还有很多程序员喜欢读书、喜欢摄影、喜欢烹饪、喜欢街舞……

只是社会在进步,处于互联信息时代,人类遇到的问题越来越复杂,专业化分工是必然选择,各司其职,各尽其责,可以提高工作效率,促进社会发展,这是一种正常现象,所以,不是程序员离开了电脑就是废物,只是人家在电脑方面比你更专业更有优势,同样你使用自己擅长的工具也比我们更专业,你会放弃自己擅长的而去选择自己不会的东西吗?


再回头谈谈我自己,我是一名软件测试员,当然属于程序员,我一个人住,一个人打理生活……

我画画技术还可以,学过一段时间素描和工笔,向朋友讨教过摄影技术,在旅游景点给游客拍个照,画个个人素描应该不至于饿死……

我语言天赋还行,英语六级过了,还有三四个聊得来的外国朋友,离开电脑的话做个文字翻译应该有饭吃……

我学过吉他和架子鼓,乐谱、鼓谱称不上熟练,但基本能看懂,唱歌不跑调,地铁口、商场门口做个流浪歌手卖个唱应该没问题……

虽然我是做测试的,但早期也做过开发,认真学过Java和C语言,千行规模的情况下,我也有手写代码的能力,离开电脑似乎并不影响我有钱赚……

即便我这些都不会,我有手有脚有头脑,天桥旁边贴个膜,小区门口烤个串……也不至于成为废物。

其实像我这样独立、热爱生活、真诚、识相的程序员比比皆是,怎么就会衍生出“程序员离开电脑就是废物”这样莫名奇妙的妄言。

虽然不可否认,程序员确实不善言辞,不懂人情世故,人际交流是他们最大的弱点,但是这种性格反而促使他们更真实,也更真诚,这也是大数据时代,人类最需要的品格。

金无足赤人无完人,有些程序员的兴趣爱好连专业人士都自惭形秽,别忘了程序员有两个大脑哦。所以该奋斗时,别那么苦大仇深,别和程序员过不去,正是他们加班加点的付出才换来了大家生活的便利!

安安静静的敲个代码找个bug也要被黑,距离十万八千里都会躺枪,做一名程序员真不容易……

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-06-20 18:17 51testing 阅读(74) | 评论 (0) | 编辑 收藏
 
脑洞小开-Selenium代码迁移时常出现的9个报错问题(内附解决方案)

场景:前端时间在家里环境编写了一部分脚本,中间耽搁了一段时间,最近想在单位重新开始弄,所以将代码考到单位环境后出现了一系列报错问题,对这些问题梳理总结如下。


1.build failed ,提示“unable to find an ant file to run”


解决:我采用方法2解决成功

出现问题原因:这个文件时我从电脑A拷贝到电脑B,缺少相应文件导致

2.python出现"No module named "XXX""的解决办法



意思是出现这个问题的原因:

1.环境中没有安装pip文件

2.安装了,环境路径错误

解决如下:

首先执行升级命令升级到最新

python -m pip install -U pip

再到site-packages目录下找pip 包

查看编译环境是否能找到自己安装的包的路径,确认是文件夹下的目录


3.Non-UTF-8 code starting with '\xc4'


解决(1):在程序最上方加上语句,# coding=gbk


解决(2):在preference下进行修改


4. ocr识别过程中报错  tesseract is not installed


这个问题无论在初始编译时或者在后来坏境变更调试时都会遇到的问题。

解决:问题原因是源码中的默认路径位置与文件位置不同,需要更改一下


7.如果下拉菜单的内容项提示定位不到,可以试试move_to_element()办法进行


下拉框是鼠标移上去直接弹出的,那么我们可以使用move_to_element()进行操作

8.切换窗口句柄时,提示list index out of range python


后来想了一下,是因为新窗口没有打开,所以就不存在窗口2,所以才会提示列表超出范围,感觉有点开窍了

9.进入三级页面提示503 Service Temporarily Unavailable,如果手动刷新页面重新加载成功

网上看都是如何配置及原因的,没告诉如何解决

于是我想,如果是这样的话,执行刷新操作应该可以规避这个问题


语句:driver.refresh()

总结

通过这一系列的问题,有点感触分享一下,遇到问题后最好先分析一下报错属于哪一类,锻炼自己不通过网上找答案,提高自己的分析能力;另外,有些时候开拓一下思路,比如上面的问题9,如果只是想怎么从根本上取消503提示,再加上对这个环境不熟悉,估计破费周折,但是换个思路加一行刷新代码,程序就可以往下进行了。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-06-18 17:41 51testing 阅读(88) | 评论 (0) | 编辑 收藏
 
一网打尽软件测试面试必问的所有Web测试点,你不知道的这都有!
     摘要: 一、什么是Web测试由于web应用与用户直接相关,又通常需要承受长时间的大量操作,因此web项目的功能和性能都必须经过可靠的验证。这就要经过web项目的全面测试。Web应用程序测试与其它任何一种类型的应用程序测试相比没有太大差别。二、测试类型单元测试、集成测试、UI测试、功能测试、性能测试、可用性测试(接口测试)、兼容性、安全性三、几款常用测试工具推荐1、负载测试工具LoadrunnerLoadR...  阅读全文
posted @ 2019-06-17 17:57 51testing 阅读(83) | 评论 (0) | 编辑 收藏
 
仅列出标题
共55页: First 2 3 4 5 6 7 8 9 10 Last