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博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

如何做好互联网产品的支付测试?入坑前先搞懂这5个要点!

现在有不少测试朋友做的项目中,可能也会涉及到支付相关的功能。比如:做商城的,做游戏的以及其他在线交易的网站、APP等。如果支付出了问题,或者用户拿少的钱通过篡改请求数据购买大金额的商品,如果是实物的话,发货前还有可能被发现。如果是虚拟商品话费、游戏币等就有可能造成损失。

所以,不管是实物也好,虚拟商品也好,对于互联网产品而言,支付是涉及到公司收入的一个重大环节,对于测试人员来说,支付测试是测试中的重要一环。失误或者轻视,可能会造成很大损失。之前可能大家也都看到过或者听过一个bug损失4.6亿美金的惨痛教训或者身边也有发生过其他因为支付功能的bug导致直接损失的案例。

那么,问题来了,对于支付模块的相关测试,我们应该如何进行呢?且听我细细道来!


一、测试方法

功能测试

通过将边界值分析、等价类划分、错误推测、因果图等各种测试方法进行结合,整理出尽可能全面的测试案例,对支付功能及其相关功能进行测试,以确保整个支付流程以及涉及到支付流程的其他流程在任何情况下都能正常进行。

接口测试

明确整个支付流程所需要调用的接口,分清楚商家和第三方支付平台的接口以及参数和请求方式。包括对接口特定参数的加密,使用异常订单号模拟支付,对服务端的校验等等。

功能测试

支付涉及到金额方面,所以要考虑安全测试方面。支付请求的伪造、金额的恶意篡改、恶意模拟第三方接口来调用商家接口等等。这都是我们需要考虑到的问题。

二、支付流程

常见的支付流程如下图所示:


主流:支付请求->第三方支付->第三方支付返回值->App根据返回值判断支付成功或失败。

之前:支付请求->第三方支付完成->返回到App前调用支付成功接口来判断支付是否成功或失败。

真实案例:

用12306买了一张火车票,支付宝支付的,支付完成后从支付宝返回到12306时,发现12306并未提示我支付完成,且在订单界面显示我的订单未支付,我就着急了(2011年,12306刚出来的时候,我有一次买票,票没买到,钱扣了的经历,后来经过客服把钱退回来了),刷新了好多次,还是未支付,正当我有点小焦虑的时候,短信通知我订票成功了。

三、支付分类


支付方式:充值支付、网银支付、银联支付、微信、支付宝,账户支付/扫码支付

资金流向:

1、网银支付:

流程:直接点击订单-》网银支付-》跳转到银行主页-》输入卡号,手机验证码,密码支付-》

支付完成跳转到return_url界面(同步回执),支付状态一般为已支付-》银行打款成功,对方收到(异步回执)-》修改数据库里面订单状态为支付完成

虚资金变化:我的银行余额减少,对方余额增加

实资金变化:我的钱少了订单金额,对方增加了订单金额

资金流向:

假如你是在平台购买商品,然后钱最终是付给商家,采用的是网银支付:

你的银行卡账户->平台备付金账户->商户账户

如果平台商就是商家:

你的银行卡账户->平台备付金账户

2、充值支付:

把钱从你的银行卡充值到平台账户,支付时,使用平台账户上的余额进行支付

资金流向:

充值:你的银行卡->平台账户

支付:平台账户->商家账户

提现:平台账户->你的银行卡(通常收费)

转账:你的银行卡->对方银行卡

3、微信支付:

流程:购物平台生成订单->选择支付方式(微信支付)->跳转到微信界面->输入密码支付->生成收款二维码->扫码支付

这里分为两种:

1、微信余额支付

2、银行卡支付

资金流向:

1、微信备付金->平台备付金账户->商户账户

2、银行卡->微信备付金->平台备付金账户->商户账户

支付中涉及的对象有哪些?

我(用户)、卖家(商户)、平台、银行、第三方支付平台(如支付宝、微信等)

概念:

虚资金:虚拟货币或者虚拟的金额,比如网上查询银行卡余额

实资金:实实在在的钱

支付时会涉及到虚资金和实资金的转换。

四、支付接口

流程清楚之后,我们再来看看其中会涉及到哪些接口?这个支付流程图里面就涉及到了第三方支付接口:

· 下单接口:商户提交下单请求到第三方支付接口,第三方支付收单成功后返回下单成功结果给到商户系统。(下单接口的最终处理结果分为下单成功和下单失败,若未收到明确结果可调用单笔订单查询接口查询结果。)

· 支付接口:调用该接口时指定支付参数,完成买家账户向商户账户的支付,采用页面跳转交互模式和后台通知交互模式。(结果分为两路返回:一路为前台在return_url页面跳转显示支付结果;一路为后台在notify_url收到支付结果通知后进行响应。)

· 退款接口:调用第三方支付的支付请求接口返回付款成功后,在需要做退款处理时调用退款请求接口发起退款处理。(退款接口的最终处理结果分为退款成功和退款失败,若未收到明确结果可调用退款查询接口查询结果。)

· 单笔订单查询接口:根据订单号查询单笔订单信息和状态。

· 退款订单查询接口:调用第三方支付的退款接口返回后,在需要查询退款请求状态可调用退款订单查询接口查询退款订单的状态和订单信息。

五、测试点(侧重于App与第三方的交互)

1、检查请求接口(传参的方式)、特定参数(订单号、金额、数量等等)加密。

2、修改请求参数”订单号”,使用已重复订单号,支付未支付的订单。

3、修改请求参数”金额”(改小、改大、负数)。

4、修改请求参数”数量”(改小、改大、负数)。

5、检查订单提交请求、支付交易的按钮,要做阻断式操作,点击一次则要等待返回值,不能多次触发。

6、检查重要字段为空(不点击输入框的情况下),做提交的操作。

7、检查未安装第三方支付应用,走网页版测试流程。

8、检查通过限速,造成提交网络请求超时,确认该订单是否生成成功。

9、检查通过限速,造成提交请求成功但数据请求回传给App网络请求超时,刷新检查订单是否生成成功。

10、检查通过限速,造成支付网络请求超时,确认该订单是否支付成功。

11、检查通过限速,造成支持成功但数据请求回传给App网络请求超时,刷新检查订单是否支付成功。

12、支付测试过程中容易忽视的测试点,方便大家查缺补漏。


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

posted @ 2019-05-27 17:35 51testing 阅读(95) | 评论 (0) | 编辑 收藏
 
Java、Python、C++、PHP、JavaScript这5大编程语言,我究竟该选哪个?

很多朋友在后台给我留言,问:现在这么多编程语言,Python、Java、PHP、C++、JavaScript等,究竟哪种最流行?我想这应该也是你的困扰吧!

其实他们各有优势,但是对于选择困难的程序员而言,这真的是个世纪难题,毕竟每个人的精力有限,不可能把所有的流行语言全学了……

在我帮你解决这个问题之前,让我们先来看看这五种语言分别是用来干什么的?这也许会帮你更快的作出决定!


1.Java

Java可以做什么:

安卓和IOS的应用开发、视频游戏开发、桌面GUI、软件开发等等;

Java拥有跨平台、面向对象、泛型编程的特性,非常受企业的喜欢,广泛应用于企业级Web应用开发和移动应用开发。

Java发展到现在,按应用来分主要分为三大块:J2SE、J2ME、J2EE。三块应用范围不同,但却相互补充。广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

2.C/C++

C++用来做什么:

搜索引擎、软件开发、操作系统、视频游戏等

C语言是一种通用的命令式编程语言,它起源于19世纪70年代,是大学里面计算机专业学的第一门编程语言,使用相当广泛,并且深远地影响了其后的几乎每一种语言。

C++最初是作为C语言的增强版出现,C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计 语言。C++被用在一些知名软件中,比如Firefox、 Winamp以及Adobe programs。

目前而言,C语言主要用来开发底层模块(比如驱动、解码器、算法实现),服务应用(比如web服务器)和嵌入式应用(比如微波炉里的程序)。C++也可以做这些,不过由于C++的复杂性和标准问题,人们还是更愿意使用C来做。

C++更适合比较复杂但又特别需要高效率的设施,可以用来开发系统软件、应用软件、高性能的服务器、客户端应用程序以及视频游戏。

3.JavaScript

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。听起来好像和java有些关系,然而却不是的,只不过名字像而已。

同时JavaScrip也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript也可以用在游戏开发等方面。

js最广泛的应用毫无疑问是在web前端。简单的说,网站给你传过来的是一堆用各种标签表示格式的文档,而js负责操纵这些文档实现一些客户端动态效果。js的领地还不仅如此,现在的Node.js还可以用于服务器端的开发。

4.PHP

PHP(Hypertext Processor) 是一种免费的强大的服务器端脚本语言,主要目标是允许网络开发人员快速编写动态页面,同时也被广泛应用于其他领域,如 Web 开发并可嵌入 HTML 中去,受到web开发者的欢迎。包括Wordpress、Digg以及Facebook在内均使用了该语言。

PHP的语法利用了C、Java 和Perl,易于学习。目前PHP的应用范围已经相当广泛,尤其是在网页程式的开发上。一般来说PHP大多执行在网页服务器上,透过执行PHP程式码来产生使用者浏览的网页。PHP可以在多数的服务器和操作系统上执行,而且使用PHP完全是免费的。

5.Python

Python用来做什么:

web开发、应用开发、大数据、数据挖掘、科学计算、机器学习、人工智能、运维、自然语言处理等等等。

Python是一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。由于具有丰富和强大的库,又被称为胶水语言,Python 极其容易上手,主要源于Python有极其简单的说明文档。

Python?的应用领域分为系统编程,用户图形接口,Internet?脚本,组件集成,数据库编程,快速原型,数值计算和科学计算编程,游戏、图像、人工智能、XML?、机器人编程等等。?

常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。Python是做服务器开发与物联网开发。

信息安全,大数据处理,数据可视化机器学习,物联网开发,各大软件的api,桌面应用,都需要python。

至于我的个人观点,本人较倾向 Python。究其原因,有以下4点:

1、简单易学,能够把用其他语言制作的各种模块轻松地联结在一起。

2、基于 Python 的顶级机器学习框架选择较多。

3、我来自计算机专业背景,Python 的逻辑更适合。在 Python 之外,我更倾向于使用 C++,这是因为我用 C++写代码写了半辈子,已经习惯了。但因人而异,其他人可能更适合学习其他语言。比如说,经验丰富的Java开发者可以接着用Java,尤其有那么多开源Java API 。

4、天道酬勤。不论你是编程新手,前端开发人员,或是想做全栈开发工程师,准备进军 AI 领域的,又或是网络运维转型开发、传统IT转行互联网的......对比Java、C++等老牌语言,Python是个绝佳的尝试。

总结:

编程语言没有最好,只有最合适,选择最适合自己的语言,才能在IT行业越走越稳,越走越远!

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

posted @ 2019-05-20 17:37 51testing 阅读(82) | 评论 (0) | 编辑 收藏
 
月薪20K的软件测试岗,为什么要求我会编程?

乔布斯曾经说过「每个人都应该学习编程,因为它会教你如何思考」,看,乔帮主都觉得所有人都应该学编程,那你说做测试的要不要学?当然要。

作为测试人员,除了上面这个原因,我觉得如果会编程,还有下面 3 个好处。

1、知道技术实现,可以设计更有针对性的用例

比如我在《需求评审之实战演练》中提到的关于计算器的测试,有些人会写一条用例是「测试一个超大的数」。

但是问到多大数算大?100000 算不算?很多人回答不上来。

也就是说,很多人知道需要测试边界值的情况,但是没人知道这个边界值到底是多少。

当然也不是所有人都不知道。

比如有人说,是 int 类型的最大值,得,能说出来这个就已经很靠谱了,试想下,如果你不会编程,你能知道什么是 int 类型?你能知道用 int 的最大值去做针对性测试?

2、更容易和开发进行逻辑层的沟通,更好的拓展测试思路。

比如一个同学发现一个 bug:

如果在 windows 的系统盘根目录丢一个 program.exe 的文件,某些程序在执行进程创建时,就会出错,把 program.exe 执行起来了。

于是这个同学就去找开发沟通。

第一个同学的沟通过程是这样的:

测试:「xgg,这个问题是什么原因导致的?」

开发:「目标进程路径带有空格,我代码中没有加引号,所以就出问题了。」

测试:「噢,好滴。」

另一个同学觉得还是有疑问,于是再次找到开发。

测试:「xgg,具体是哪个实现的问题?是我们内部的函数实现?还是调用的系统 API 有问题?」

开发:「我用的 CreateProcess API,他的第二个参数如果带有空格,又没有加引号,就会出这个问题。」

测试:「CreateProcess API 使用的地方很多,能否搜一下看看每个地方本次都做了修改?」

开发:「好,马上看。」

测试:「同样功能的 CreateProcessAsUser、CreateProcessWithLogon、CreateProcessWithToken 应该有类似的问题,可以一起搜一下看看都处理了没有。」

开发:「好,立刻看。」

如果你是开发,你喜欢和哪一位测试配合?

如果你是测试,你希望自己前面那位同学还是后面这位?

3、更好的自动化思维,把提效落实到实处。

现在很多功能,都会在逻辑中加一些日志,如果是调试版文件,日志输出就更多了,对于客户端产品来说,很多日志输出在 dbgview 里,我们可以通过一些过滤条件进行过滤,甚至设置高亮,但如果是输出的纯本地的文本日志,那么每次查看日志就必须要 Ctrl+F 然后输入关键字逐个去确认了。

我们看看手工操作的步骤:

第一步:找到日志文件并打开;

第二步:Ctrl+F 调起搜索框并输入关键字;

第三步:回车-检查-回车-检查,如此反复;

这时候如果有一个同学,会一些简单的脚本技术,可能会考虑对这个过程做一个优化,比如提供一个工具,只需要在工具中输入关键字,工具就会自动找到日志文件,并把所有关键字相关的记录都提取出来,会不会爽很多?

我们看看使用这个工具的操作步骤:

第一步:打开工具并输入关键字(工具自己查找日志路径,并且在每次操作时都保证获取的是最新的日志);

第二步:检查结果(结果中全都是相关性内容);

看起来只是节省了一步吧,但是工具这两步操作中,都隐含了大量的重复操作的优化。

比如第一步「打开工具并输入关键字」,其实工具是自己查找日志路径,并且在每次操作时都保证获取最新的日志,这样就避免了手工操作时每次都要重新打开日志的麻烦。

比如第二步「检查结果」,之前是在所有日志里面去一个个检查搜索结果,现在工具出的结果是只显示和关键字相关的上下文信息,可以极大地减少其他信息干扰,更快更准地找到自己需要的信息。

如果你不会编程,你会考虑用这个简单的工具去提效?

就算你考虑到能用工具提效,你能快速准确的把自己的需求提出来并找到人帮忙实现?

就算实现了,碰到一些小的体验问题你能总是不断找人帮忙优化?

总结:

做测试要不要学编程?我的答案是,要,会编程的测试可以往业务线的测试开发方向努力。

我不会编程能不能做测试?我的答案是,能,不会编程的测试可以继续在业务专家方向深耕。

以上,你会编程不?目前什么水平?自己团队小伙伴的编程技术都什么水平?你认为做测试到底要不要学编程呢?欢迎留言和我讨论。

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

posted @ 2019-05-17 17:35 51testing 阅读(72) | 评论 (0) | 编辑 收藏
 
我们分析了近10000个Python开源项目,精选出最实用的Top5!

人生苦短,越来越多的人,都开始用Python了。Python 语言易学,且开发高效,用 python 语言开发的开源项目活跃度很高,Python领域优秀的开源软件层出不穷,关注一个好的开源软件,对一个开发者来说可以带来很多益处。或者你可以很好地运用这个开源软件,成为它的一个用户;或者你可以阅读它的源码,从中学习技巧;甚至你可以通过参与该软件的开发,来获得经验和名声。只要用心,每一个好的开源软件都是一座富矿。


但寻找好的项目资源,费时又费力,成了头号难题。现在,好消息来了!我们比较了近10000个Python开源项目,精选出了目前最活跃的5个!

1、排名第一位的当然是有关机器学习的Google开源项目 TensorFlow,TensorFlow 是一个采用数据流图,用于数值统计计算的开源项目,此项目一经公布就有过万的 star 和 fork,被广泛的用于机器学习和深度神经网络方面的研究。

项目代码的官方链接如下: https://github.com/tensorflow/models

2、排名第二位的是python web 方向的新贵 Flask,Flask 是一个微型的 Python Web 开发框架,它基于WSGI工具箱和 jinja2模板引擎,可以最灵活最快速的配置开发属于自己的 Python Web站点。

项目代码的官方链接如下: https://github.com/pallets/flask

3、排名第三位的是python web 方向的经典 Django,Django 是一个采用 M-V-T 设计模式的 Web 框架。在Django中,由于控制器接受用户输入的部分由框架自行处理,所以 Django 编程更关注的是模型(Model)、模板(Template)和视图(Views)。使用 Django,我们可以迅速创建高品质、易维护、和数据库驱动的Web服务程序,尤其对不甚熟悉数据库操作的建站同学来说,如获至宝。

项目代码的官方链接如下: https://github.com/django/django

4、排名第四位的是功能测试框架 pytest,pytest 是一个成熟的全功能的Python测试框架,可以帮助你更好的写出自动化测试程序,它能适应从简单的单元测试到复杂的集成测试在内的全功能测试,并且支持众多的插件开发。

项目代码的官方链接如下: https://github.com/pytest-dev/pytest

5、排名第五位的是数据采集工具 scrapy,scrapy 是一个优秀的网络数据爬虫框架,用户只需定制开发几个模块就可以轻松的实现一个完善的网络爬虫,用其来抓取网页内容数据以及各种图片文件等非常方便;Scrapy 还提供了多种类型的爬虫基类,如 BaseSpider 和sitemap等;Scrapy被广泛的运用于数据挖掘、网络监测和自动化测试等领域。

项目代码的官方链接如下: https://github.com/scrapy/scrapy

需要说明的是以上的排名是根据代码submit 和 fork 的活跃度的排名,仅仅反映的是开源代码的受欢迎程度,并非就是企业市场应用的火爆度,注意区别,你要根据自己的需求选择合适你项目的python 开源框架和工具。

总结:

每一位程序员,每天大部分时间都是在和代码打交道。但是对于广大的普通用户来说,最重要的不是代码,而是代码最终生成的应用程序。但是,每个项目都从头开始自己一行一行码代码,是非常不现实的事情。所以,开源项目就是我们在实践过程中最宝贵的资源。

开源项目对程序员来说意义非凡,可以大大提升软件开发速度,让自己花些时间,好好看看上面这些可能被你错过了的 Python 开源项目吧!你可以从这些开源的python项目中学到很多,你也可以为python项目做贡献。


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

posted @ 2019-05-15 17:42 51testing 阅读(109) | 评论 (0) | 编辑 收藏
 
国内外最好用的6款Bug跟踪管理软件,测试员不可不知!

现在到处都在说Bug管理,但是,Bug管理究竟是什么呢?是仅仅对项目的bug进行管理?那要文件夹不就行了么,要什么bug管理系统?

那么,bug管理究竟是做什么的呢?


要了解bug管理,我们首先要了解bug这个词语的应用,“bug”是一个英文单词,本意是缺陷、损坏、虫子等意思。人们通常将电脑系统或软件程序中,隐藏的一些缺陷统称为bug。

但是现在,就像“上线、下线”这些词语一样,“bug”也是个被人们用坏了的“高端词汇”,无论什么出现问题都可以被叫做出现了bug,但是究其根源,bug是特指:电脑系统或软件程序中出现的缺陷。

究竟什么是bug?

大数据时代,各种网络应用更新换代,无论什么行业都要做App;公司都要成立网站;企业都要开发软件;随之而来的也就是无尽的bug,兼容性问题、功能性问题等等所有不合理的问题都可以称作是bug。

Bug管理一般流程

1. 新建:测试人员提交新的Bug入库,缺陷状态为New。

2. 确认:高级测试人员(可以是项目负责人)验证错误,如果确认是错误,分配给相应的开发人员,设置状态为Open。如果不是错误,则拒绝,设置为Declined(拒绝)状态。

3. 指派解决:开发人员查询状态为Open的Bug,如果不是缺陷,则更改状态为Declined;如果是Bug则修复并更新状态为Fixed。不能解决的Bug,要留下文字说明并保持Bug为Open状态。对于不能解决和延期解决的Bug,不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可。

4. 验证:测试人员查询状态为Fixed的Bug,然后验证Bug是否已解决,如解决即更新Bug状态为Closed,如没有解决则更新状态为Reopen。

没错,对于一个软件或Web应用程序开发者来说,Bug通常是让他们最头疼的问题。那么开发人员肯定需要一些bug跟踪和问题跟踪应用程序,通过这些软件很容易地检查一堆代码的错误和问题,并帮助解决这些问题。特别是通过错误跟踪应用程序,可以很好的管理你的项目,给予bug报告和修复它们。

那么,如何高效的管理BUG,解决BUG?在这里,为大家搜集了6款优秀的BUG跟踪管理系统:

首先是国内BUG管理软件:

Bugtags


Bugtags,就主要面向中小企业,提高移动应用的人工测试效率。

具体来说,当移动应用集成 Bugtags SDK 后,在原有程序中多加一行代码就能进行测试。用户或者测试人员可以直接在应用里提交 bug,SDK 会自动截屏、收集实时的运行数据,如设备的硬件参数、控制台数据、用户的操作步骤等,并且自动提交闪退 bug 及数据,开发人员则在 Bugtags 云端高效的跟踪及管理所有 bug。

禅道


禅道项目管理软件主要管理思想基于应用最为广泛的敏捷开发方法Scrum,同时又增加了Bug管理,测试用例管理,发布管理,文档管理等必需功能,覆盖了研发类项目管理的核心流程,为IT企业或正在进行信息化的企业提供了一个一体化的集成管理工具。

30多个功能模块,200多个功能点,满足项目管理方方面面的需求。在scrum基本的流程基础上,创造性地实现了需求、任务、bug、用例、todo之间的互选转换和轮转:需求分解为任务、bug可以转换为需求、bug可以导入到项目中作为任务跟踪、用例执行结果可以生成bug、bug可以转为用例。bug和任务可以转换为个人的todo。

iClap


iClap是一款以产品管理为核心、集成多种工具服务的企业协同软件,在BUG跟踪管理上,iClap也有其特色。

内部、外部测试出现的bug、建议等都汇总在系统后台,方便处理和归档

嵌入iClap SDK的游戏或者其他应用在测试的时候,一般的功能性BUG可以通过文字,图片,视频的方式反馈给相应的人员,并在iClap后台自动生成记录。在测试过程中出现的系统BUG(如闪退)则不需要测试人员再去过多的描述BUG出现前后的场景,iClap会自动记录用户步骤、堆栈信息及控制台日志信息,程序员可根据这些信息快速了解产生BUG的原因。当然,系统BUG同样会在iClap后台生成记录,值得一提的是,iClap后台可在PC及移动端同步查看。

国外BUG管理软件:

JIRA


用它管理项目,跟踪任务、bug,通过JIRA的邮件通知功能进行协作通知,在实际工作中使工作效率提高很多,效果非常不错!安全性性、可扩展性方面发挥到了极致!

JIRA不仅仅是一个缺陷跟踪系统,通过Jira,可以整合客户、开发人员、测试人员,各人各司其职,信息很快得到交流和反馈,让大家感到软件开发在顺利快速的进行,朝意想的目标迈进。IDEA下的Jira插件,主要为开发人员服务,实时将信息反馈给开发人员,开发人员同时迅速地将修复的结果信息反馈到跟踪系统中,最后通过持续集成,软件迅速地完成了更新,这些方便便捷的操作会极大地鼓舞软件开发中的各方人员,甚至包括客户,及时响应,相信是每一个客户都会欣赏的。

跟同类软件产品TestTracker、ClearQuest、TestDirector相比,JIRA的性价比最好!因为TestTracker、ClearQuest、TestDirector等这几类软件都是根据用户数来定价的,而JIRA软件不限制用户数!不限制创建项目数和Issue的数量!一年内免费更新版本!!

JIRA的缺点:对于测试需求、测试用例等都没有提供直接的方式进行管理。

BugLog HQ


BugLogHQ是一款免费和开源的工具,主要功能是处理多个应用中的Bug和可能遇到的问题。它能提供统一标准的错误信息显示,允许用户简单的进行搜索,图形化,甚至是跟踪Bug报告。它还会提供一个仪表板来显示聚合的数据视图,帮助用户监控整个项目的健康情况。

Bugify


Bugify是个非常简单的问题跟踪系统,并且功能非常强大。它的主要功能:问题优先级,搜索过滤,邮件通知,标签,问题链接,键盘快捷键,Mardown格式化,最突出的功能就是支持无限种其他语言。

总结:

bug管理系统的好处:

BUG跟踪:一个bug单会在测试人员和开发人员之间走很多个来回,很不方便:(需要测试-修改-复测-修复-再测试 直到BUG解决的过程).

1、对于开发人员来说:A.明确自己手头上有哪些BUG待处理.

可以通过目录结构,按条件查询,可以更好的安排修改BUG时间。

B.记录开发人员什么时候解决的及如何解决的.

c.为以后旧BUG修改引起新BUG提供历史参考.

2、对于测试人员来说:A.测试人员什么时候提交的,当时的测试环境怎样?

B.开发人员解决BUG后,需根据BUG处理意见再次复测确认.

C.对测试人员工作的考核.

3、作为项目的管理者:A.需要及时全面了解目前项目状况

B.有些BUG影响全局,需要立即给出处理决策;有些BUG需要需要决定改或不改,还是延期处理。

以上收集的6款最佳的Bug跟踪管理系统,这些系统有收费也有免费的,有自己的特性和功能,大家可以根据自己的实际情况选择性价比最好的那一款。

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

posted @ 2019-05-14 17:42 51testing 阅读(199) | 评论 (0) | 编辑 收藏
 
分享一下我面试腾讯的真实经历,揭秘今年校招面试关键得分点!

作为一个计算机科班出身的测试猿,毕业后一直混迹于二线城市的二线互联网公司,每次看到技术群或者朋友圈里BATH的同学晒工作照、年会照、团建照,永远是“身不能至,心向往之”的感觉。终于在两年前的夏天,我决定换个工作环境,有幸参加了深圳腾讯的面试,当时笔者由于准备不充分,很遗憾没能最终拿到OFFER,但是当时的我入行不到两年,能够杀入终面已经非常幸运了,所以笔者愿意把这段面试经历写出来,一方面作为个人总结,另一方面也是希望能够给广大测试圈儿的朋友们一点启示。


第一关:简历结果:PASS

之所以把“简历”作为第一关,原因其实很简单:如果简历都写得毫无逻辑、毫无特色,HR自然就会把你的简历筛掉。我当时花了一天的时间来整理简历,简历一般不超过两页,毕竟大公司的HR们工作都很忙,你就算简历写了十几页人家也没时间看,我的简历大概分几个模块:

1、个人信息:包括姓名、性别、年龄、邮箱、电话、住址、工作经验、学历、学校、身体状况、英语水平、期望薪水等等信息,总之就是要简单明了,照片就用登记照就可以了,过度美颜的或者大头贴的照片还是不要了。

2、工作经历:这里我就按时间先后顺序把自己呆过的几家公司名称、岗位、薪水、在职时间等信息列了出来。这里要特地提醒一下大家,过于频繁地跳槽真的不太好,比如我曾经做面试官时,就碰到有同学一年跳三次,结果领导直接说这种就没必要面试了,太不稳定。也许有的同学会问,那我可不可以稍微“修饰”一下工作经历呢?比如合并删除一些工作经历、之前薪水稍微报高一点点。对于一般公司、非高管类的岗位来说,HR的背景调查没有那么严格,如果你确实因为一些不可抗力的因素跳槽有点频繁:比如创业公司还没呆几个月就垮掉了,比如刚来公司两个月发现有拖欠薪水的情况等等,那么适当删除一些较短的工作经历、适当合并一些经历也是“人之常情”,一般HR也不会太计较。但是投简历给大公司的时候,关键信息还是不要作假,比如学历、离职证明等。

3、技能说明:这里就列举你会什么框架、什么技术、什么工具。比如你可以说自己掌握了selenium自动化测试框架,会用PYTHON编写脚本,对于ES和MySQL会搭建会使用等等。

4、项目经历:这才是简历重中之重的部分。这里就列举你做过的一些项目,简要概括一下这个项目的背景、业务需求是什么样的,你在项目里做了哪些工作,用的哪些技术,有什么收获和提高,还有哪些不足待改进等等。后续准备面试的时候也要把做过的项目拿出来复习复习,关键技术点弄清楚,因为面试官肯定会照着简历问项目经验的。有些不是自己做的模块最好也请教一下同事,争取把做过的项目的细节都搞清楚,方便后续和面试官交流。

另外,再提一下投简历的技巧,笔者最开始在智联、BOSS直聘、拉勾上投BATH的各种岗位,结果都石沉大海,而且反馈速度很慢。最后是一个在腾讯做JAVA后台开发的高中同学帮我内推的简历,应聘岗位是财付通业务结算测试,于是两天内就有反馈了。可见,能内推还是尽量内推吧。

第二关:电话面试结果:PASS

同学帮我内推简历后的第二天,我就接到了腾讯的电话。说实话大厂的员工素质还是高一些,电话面试的这个面试官说话特别客气有礼貌,先是让我自我介绍一下,我balabala简单说了一下个人信息和工作经历,然后问我为什么要投腾讯的岗位,我说我想去个大公司,再后面就是简单聊了一下项目情况,我当时就是介绍了一下项目业务需求,然后分了几轮进行,每一轮测试重点关注哪些方面(UI界面、前台后台功能逻辑、算法逻辑、算法效果、稳定性测试等),用到了哪些技术(Linux\Sqlite\MySQL\Elasticsearch\Loadrunner\shell)等等。然后这个面试官就说二面三面都是要来深圳总部面试的,路费住宿费都不能报销,让我考虑一下再回复他。我当时就一口答应愿意过去面试,毕竟是自己非常心仪的公司。

第三关:FACE TO FACE Interview       结果:PASS

腾讯的面试非常人性化,社招都安排在周末。我先订了去深圳的火车票(硬座),然后联系了在深圳安家的表姐,表示要在表姐住两个晚上。由于是绿皮车硬座,所以你懂得,一晚上都没睡好觉,第二天刚出火车站,表姐开车来接我去她家吃了个早餐又把我送到腾讯大厦。(在此非常感谢表姐的照顾)到了腾讯大厦会有实习生给办理临时工牌,并指引你去相应的会议室等待面试。说实话,第一次去腾讯大厦面试,我还是挺紧张的,特别是一个人乘电梯去二十几楼的会议室的时候。会议室里大概坐了七八个人,都是等着面试的,各个岗位的都有。

言归正传,没等一会儿就轮到我了。我被实习生带到另外一间会议室,面试官是一位非常有气质的小姐姐。小姐姐开门见山让我在会议室的白板上画一下之前项目的系统结构图,我就把之前智慧停车项目的系统结构图画了出来。然后小姐姐仔细问了我每一个模块的作用以及模块之间如何通信,比如球机和嵌入式前端机如何通信?走什么协议?前端机和云平台之间如何通信?数据传输格式是什么?以及数据存在本地数据库的记录格式是什么?什么时候才抛向云平台?如何判断两条记录是同一辆车的入位出位记录?用的智能算法是什么?有没有参与过数据集的训练等等......总之问得非常细,这些东西我在写简历的时候就复习过了,而且平时也非常主动地同开发同事沟通项目细节,所以总得来说答得还不错。最后,小姐姐又问了一些测试的基础知识点:比如压力测试和负载测试的区别是什么?一个BUG的完整周期包含哪些阶段?什么是灰盒测试?我也都回答准确。答完后小姐姐让我回到最开始的会议室等结果。没一会儿,实习生说我可以进入终面了。

第四关:终面-白板CODING       结果:FAIL

终面在另外一间会议室进行,这次的面试官换成了一位表情十分严肃的小哥哥。一落座,面试官问:“用过哪些数据库?SQL熟么?”我答“用过SQL SERVER 2000\MYSQL\SQLITE,sql语句基本的都会”“那好请在白板上写一条sql,实现查询某张表的前十条记录”我直接在白板上写了句“select * from students limit 10”。面试官又问“这是哪种数据库的写法?其他数据库的写法会吗?”答曰“这是MySQL的写法。其他数据库的写法不太了解。”接下来,面试官又问“你最拿手的是哪种编程语言”答“shell”(其实平时工作中最多用shell写非常简单的脚本,更多的是看懂别人的脚本然后改改参数之类,所以编程基本功并不扎实,所以当时很心虚地说shell)“那你用shell写一个去重的代码,就是有个txt文本里有很多条记录,这些记录有些是重复的,要求把重复的记录剔除掉。”当时听完题目就蒙了,完全不会啊,于是故作沉思了一会儿,才和面试官说“真抱歉,这个题目我不会。”于是面试官就让我回最初那个等待区等结果了。

回到最初的等待区,没一会儿,实习生过来告诉我说,很遗憾,白板coding这关没有过,看我远道而来送一个QQ公仔给我做纪念。

后记:一点经验教训总结

先说教训吧。笔者觉得这次面试失败的主要原因还是那道去重的题目没有答上来。虽然笔者面试的是财付通结算业务测试的岗位,应该属于功能测试的范畴,但是类似BATH这种大公司是没有“纯点工”的岗位的,即便是功能测试也要有一点点代码能力,至少能看懂开发写的代码并且写一写简单脚本。而且白板Coding这种形式在大公司的面试里十分常见,毕竟光聊简历聊项目,看不出一个人的真实水平。由于平时工作里,我动手写脚本的机会并不多,准备面试时间又比较仓促,所以那道“去重”题目没有答上来。看来平时还是要多积累,提高代码能力,即使是工作中暂时不需要你编码,你也要利用业余时间学一学,掌握一种程序语言后,就多找机会练习实践或者上网刷刷程序员面试题,不懂地可以百度也可以和开发同事请教,正所谓艺多不压身。

再说经验吧。个人感觉前三关我答的还是挺好的,答完就知道自己有戏的感觉。首先,要精心准备简历,切中要害突出重点,能找熟人内推就内推,因为内推的效率相对来说高很多。其次,测试基础知识要扎实,一些基本的概念平时可以利用零散时间看看Atstudy网校公众号的文章,巩固一下。不要因为比较简单就掉以轻心,毕竟高楼大厦平地起,基础不扎实很难成为一名优秀的测试工程师。再次,不断地积累项目经验,切记不求甚解的行为。平时多和项目的同事们沟通,对于一些业务需求或者技术细节刨根问底地去了解,即使不是自己负责的模块,你多了解一些都是有好处的。面试之前把自己做过的项目梳理一遍,复习一遍,争取做到心中有数对答如流。最后,每参加一次笔试面试都做好总结工作,不断积累面试经验和面试技巧,这样以后无论去大公司还是小公司面试才能做到理智淡定不紧张。

学无止境,谨以此文纪念那次难忘的腾讯面试经历,愿与各位测试同行们共勉!跳槽季,祝大家早日拿到满意offer!

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

posted @ 2019-05-09 17:35 51testing 阅读(129) | 评论 (0) | 编辑 收藏
 
孩子们,为什么我建议你一定要会接口测试?

接口测试提出的时间虽然不长,但是发展速度和企业重视程度远远超出了其他的自动化测试技术,究其原因,可以归结为以下几个方面:

1.以往的自动化测试技术,主要是针对界面UI层。但是由于这种基于UI界面元素的自动化技术对界面有非常大的依赖性。所以为了很大程度上减少返工,针对系统内部以及外部的接口进行测试,一方面测试工作可以介入的更早一些,另一方面接口测试与界面是无关的。所以鉴于此,接口测试的优势就越来越被企业所重视。

2.随着系统跨平台的发展趋势愈演愈烈,以及不同系统之间数据交换的频率越来越高,接口的设计和存在也越来越广泛了。所以在一个系统中存在多种多样的接口就演变为一种必然的技术架构模式。由于接口事实上的存在越来越广泛的原因,那么接口的测试技术就从以往很少被提及,变为一个测试工程师的必备技能。


自动化测试的优势与前景:

1、提高效率

2、避免人为出错

3、保证每次测试的一致性和可重复性

4、避免重复工作

5、节省人力资源

6、克服手工测试的局限性

想一想,如果你想在测试这个行业一直做下去,35岁之后,凭什么让一家企业继续任用你?你的经验和功能测试技术是远远不够的,你需要进阶,你需要丰富你的技术栈!

我帮大家梳理了接口测试技术的学习路线,全网独有,赶紧收藏好,绝版干货!

第一部分:接口测试分析(必备技能)

核心

1、接口测试设计文档分析

2、接口测试需求分析

3、接口测试用例设计

技能要点:

1、掌握接口基本要素组成

2、掌握接口测试原理

3、了解各种不同类型的接口

4、掌握接口测试需求分析技术

5、评估测试用例覆盖率

第二部分:手工接口测试(基础技能)

核心

1、熟练掌握接口测试工具

2、数量掌握抓包工具

3、能阅读接口测试用例

技能要点:

1、掌握常见的接口测试工具使用

2、依据测试用例手工执行接口测试

3、判断接口测试的结果是否通过

4、能够编写接口测试bug文档

第三部分:自动化接口测试(中级技能)

核心

1、熟练掌握各种接口脚本技术

2、具备测试脚本调试能力

3、熟练编写独立接口测试脚本

4、熟练编写接口联调测试脚本

技能要点:

1、独立使用脚本语言进行测试脚本的研发

2、掌握测试脚本的调试能力,对脚本中存在的错误能进行定位分析

3、可以独立编写各种不同类型的接口测试脚本(get、post、put、delete)

4、能够处理特殊接口的脚本编写问题(安全认证,接口相互传参、接口相互调用)

第四部分:接口测试框架(高级技能)

核心

1、熟悉测试框架原理及技术

2、能够设计接口测试框架

3、能够实现复杂框架的脚本研发

4、能够不断优化测试框架

技能要点:

1、熟练掌握接口测试框架的原理及其技术

2、能够根据企业和项目的不同的特点及需求要求,进行测试框架的设计

3、能够将框架设计思想转化为框架脚本

4、针对框架中存在的各种需要改进和优化的问题进行不断完善

总结:

常用的接口测试工具有很多,比如:Postman、Jmeter、SoupUI、Loadrunner等。

当然,精通接口测试也不是一朝一夕就可以做到的,在测试行业,只会些皮毛是走不远的,现在很多企业都需要员工会设计接口自动化框架,这边简单帮大家总结下所需技能:开发环境的搭建、实现框架的骨架设计、代码运行线路分析、重构和修改、日志和常用代码提取成方法、封装等等。

成为一名测试员很容易,但要想走得更高更远,不仅需要脚踏实地的编码,更要抬头看好方向。一味的钻进编码的圈子,只依靠编码来解决问题,往往会事倍功半。完成框架之后,多做一些综合性的考量,才是成功的关键。

所以,针对接口测试整体工作流程、如何进行接口测试需求分析、如何设计接口测试脚本等方面的具体接口测试工作相关的问题,我特意为大家邀请了51Testing的超级大咖来给大家带来一节免费的接口测试直播课:

5月9日晚7点30,一起免费学习接口测试,应对面试顺利过关!

Atstudy网校

周年庆特别福利

限时免费

扫码立即报名


扫码抢座 限量100人报名

PS:请先扫码添加小助手,小助手会手动拉您免费听课。

posted @ 2019-05-08 17:44 51testing 阅读(70) | 评论 (0) | 编辑 收藏
 
盘点Selenium和Appium异同点,揭秘二者内部原理!

前段时间学习了selenium的使用,今天开始接触appium看到appium的原理后产生了疑惑:

现在的selenium是通过webdriver来操作驱动浏览器的,然而appium有一个server的概念

那么为什么没有app driver这个东西呢?


selenium

早期的selenium

早期的selenium主要是指selenium1.0的版本,

这个版本主要由Selenium IDE + Selenium Grid + SeleniumRC组成

seleniumRC就是后来被webdriver取代的一个代理server

RC == Remote Control 远程控制

早期Selenium 引入了 Remote Control Server 这样一个代理 Server,JavaScript 脚本注入和与 Server 通讯都通过这个代理 Server 来进行,JavasScript可以获取并调用页面的任何元素,Selenium启动一个Server,将操作Web元素的API调用转化为一段段JavaScript,在Selenium内核启动浏览器之后注入这段JS

缺点:但是JS注入速度不理想,稳定性大大依赖于Selenium内核对API翻译成的JS质量高低

引入代理Remote Control Server是因为“同源策略”的限制,通过这个代理服务器来“欺骗”远程Server,达到使其以为是从同一个地方load代码以正确返回请求数据的效果

seleniumRC的原理

1.Selenium RC Server 启动一个浏览器(或是已经使用中),并注入js代码

2.将测试脚本代码传到客户端的 Selenium-Core 中

3.Selenium-Core 翻译并解析执行用户录制的操作

4.让代理 Server 进行通讯

5.Remote Control Server 负责跟远程 Web 应用服务器进行通讯

seleniumRC的组成

1.Selenium Server(Launcher、Http Proxy、Selenium Core)

2.Client Libraries(用来控制server)

seleniumRC的工作流程

1.测试用例通过Client Libraries的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接

2.Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面中,并发浏览器的代理设置为Selenium Server的Http Proxy。

3.测试用例通过Client Libraries的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作

4.Selenium Core接收到指令后,执行操作

5.浏览器收到新的页面请求信息,于是发送Http请求,请求新的web页面。Selenium Server会接收到所有由它启动的浏览器发动的请求

6.Selenium Server接收到浏览器发送的Http请求后,自己重组Http请求,获取对应的web页面

7.Selenium Server的Http Proxy把接收的Web页面返回给浏览器

现在的selenium

selenium3.0以后移除了seleniumRC,取而代之的是webdriver

用一张图来展示selenium3.0的运行原理


这里讲到的是测试脚本和浏览器的交互,客户端开始运行驱动浏览器的脚本的时候,这时浏览器收到请求开始启动并开启侦听端口,并自动创建session,保持浏览器和对应客户端的会话连接,然后客户端运行脚本,向浏览器发送http请求,浏览器解析请求,根据脚本内容做出相应操作,返回response。这时客户端根据response选择结束还是继续执行

tips:

1.webdriver操作浏览器、页面采用的协议:the webdriver wire protocol

2.Client和Server的通信协议:HTTP

3.HTTP传输的数据内容为遵循WP协议json格式数据

4.浏览器驱动实现了webdriver协议的api

appium

appium和selenium之间的不同

appium本身就是一个server,而selenium废弃了server,用webdriver来驱动浏览器

appium工作原理

当开启appium服务器的同时就开启了监听端口;我们运行脚本的时候,调用任何的appiumAPI,都会向Appium Server端post一条HTTP请求,请求内容就是根据webdriver wire protocol协议规定的一条JSON格式的数据;Appium Server端接收到请求后,解析出JSON数据并发送到手机端;手机端上已经由BootStrap.jar(iOS为BootStrip.js)开启的socket服务器监听相应的端口,BootStrap.jar在appium每个session第一次访问手机端的时候会自动安装;手机端接收到对应的请求后,通过BootStrap.jar翻译成UIAutomator能执行的命令,然后通过UIAutomator处理并操作APP完成测试。

appium的几个概念

1.appium/appium server

一般所说的appium其实是一个基于node.js的web服务器,它是测试脚本和设备端交互的桥梁

用npm install -g appium 安装的是命令行的没有界面的appium server

2.appium GUI

它是把没有界面的appium server封装出了一个图形界面,方便操作,但是现在已经被appium desktop所取代

3.appium Desktop

它是一款适用于Mac,Windows和Linux的开源应用程序,它以美观而灵活的用户界面为您提供appium server的强大功能

4.appium client

第1点中说到,appium其实是一个sweb server,server是接收请求来操作设备端的app的,既然有了server那么一定会有client

这个client就是我们写测试脚本时导入的包

Python中可以运行 pip install Appium-Python-Client 来安装

Android和 iOS



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

posted @ 2019-05-07 18:23 51testing 阅读(293) | 评论 (0) | 编辑 收藏
 
忍不住要曝光:那些WEB测试不得不说的小细节(基础篇)

随着Internet和Intranet/Extranet的快速增长,Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,电子商务迅速增长,早已超过了国界。范围广泛的、复杂的分布式应用正在Web环境中出现。Web的流行和无所不在,是因为它能提供支持所有类型内容连接的信息发布,容易为最终用户存取。


一般软件的发布周期以月或以年计算,而Web应用的发布周期以天计算甚至以小时计算。Web测试人员必须处理更短的发布周期,测试人员和测试管理人员面临着从测试传统的C/S结构和框架环境到测试快速改变的Web应用系统的转变。

做web测试的小伙伴有很多,但你真的知道Web测试应该注意哪些地方吗?怎样才能做好Web测试?跟随我的脚步一起挖掘web测试需要留意的小细节!

什么是Web测试?

“Web 测试”也称为声明性Web 测试,它由一系列HTTP 请求组成。Web 测试通过发出HTTP 请求在协议层工作。Web 测试不运行JavaScript。Web 测试用于测试Web 应用程序的功能以及在负载下测试Web 应用程序。Web 测试可用于性能测试和压力测试。

适用范围

适用于所有基于WEB的网站测试的项目。

Web测试的特点

基于Web应用测试的特点是用户通过计算机中安装的浏览器就可以访问指定URL网页进行测试。

表单测试、功能测试、界面测试、安全测试

Web应用测试内容

1)功能测试:

链接测试

表单测试

Cookies测试

设计语言测试

数据库测试

应用程序特定功能测试

2)性能测试:

响应速度测试:响应速度测试就是获取系统对用户请求的响应时间。

负载测试:负载测试是为了测量系统在某一负载级别上的性能,以保证系统在需求范围内能正常工作。

压力测试:压力测试是测试系统的极限和故障恢复能力,也就是测试应用系统会不会崩溃,在什么情况下会崩溃。

3)用户界面测试

Web界面面对的是用户,用户通过Web界面实现对软件、数据库的操作。通过Web界面测试可以确保Web应用向用户提供了正确信息的显示,从而使用户能够进行正确的操作,来实现Web应用的功能。用户界面测试包括:导航测试、图形测试、内容测试、整体界面测试等。

4)安全性测试

Web应用系统常受到病毒和非法入侵的攻击,数据传输会被非法截获和伪造传递。因此Web系统的安全性测试是非常重要的。Web应用安全性测试包括Web应用程序部署环境测试、应用程序安全性测试、数据库测试和容错测试等。

5)接口测试

在很多情况下,Web网站不是孤立的,它可能与外部服务器通讯,请求数据、验证信息或提交订单等。 Web接口测试,需要测试浏览器与服务器之间的接口。有些 web系统有外部接口,测试人员需要检查外部接口返回服务器的消息和数据。

6)客户端兼容性测试

对于WEB应用,我们是无法预知用户的客户端配置和运行环境的,所以,做好兼容性测试是非常重要的。Web兼容性测试需要测试Web系统在各种操作系统、浏览器、视频设置、Modem/连接速率等环境下是否正常使用。

网页测试留意的细节

1、每次测试之前都需要代码更新、清理缓存。

2、各模块的信息归类是否正确。比如进入一级栏目或二级栏目的列表页,查看左侧栏目名称,右侧文章标题及内容是否正确。

3、Logo图片是否正确显示,比如大小、位置和图片的相关说明等。

4、所有文章标题、图片、导航等链接跳转是否正确。

5、查询:

1)精确查询还是模糊查询;

2)输入存在的信息,正确搜索出结果;

3)输入特殊字符,搜索不出结果或者给出相应提醒信息;

4)输入空格,搜索不出结果或者给出相应提醒信息;

5)不输入任何内容,搜索出全部信息或者给出相应提醒信息。

6、分页:

1)分页的总页数及当前页数显示是否正确;

2)是否正确跳转到指定的页数;

3)翻页后,列表中的数据是否按照指定的顺序进行排序。

7、导入:导入条件不符合时,能否给出提示; 导入信息符合时,是否成功导入。

8、导出:导出信息是否正确(全部导出和筛选过后的导出)。

9、输入框:

1)必填项的判断是否准确;

2)数据边界值、超边界值的处理;

3)对于特殊字符的处理是否正确,特别要注意单引号和&符号;

4)字符长度是否有限制;

5)输入超长字段,输入框是否被撑开。

10、下拉框的数据是否显示正确,比如添加了一条信息,下拉框中的数据是否也增加。

11、前后台交互的部分,数据传输是否正确。

12、提示、警告或错误提示信息是否清楚易懂,用词准确。

13、页面中错别字和乱码的检查。

14、切换窗口大小,将窗口缩小后,页面是否按比例缩小或其他合理处理方式,文字或图片是否窜行。

15、系统是否支持Enter键、Tab键等。

16、浏览器的前进、后退、刷新按钮,系统是否正确处理。

17、主流浏览器是否兼容。

总结:

Web测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战。基于Web的测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试,其中安全性还涉及到SQL注入及防范、Xss跨站攻击、DDOS拒绝服务攻击等等。

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

posted @ 2019-04-29 17:36 51testing 阅读(88) | 评论 (0) | 编辑 收藏
 
你想入门软件测试?先从“用户登录”测试用例开始!

可能你会说,“用户登录”这个测试对象也有点太简单了吧,我只要找一个用户,让他在界面上输入用户名和密码,然后点击“确认”按钮,验证一下是否登录成功就可以了。的确,这构成了一个最基本、最典型的测试用例,这也是终端用户在使用系统时最典型的Happy Pass场景。


但是作为测试工程师,你的目标是要保证系统在各种应用场景下的功能是符合设计要求的,所以你需要考虑的测试用例就需要更多、更全面。于是你需要根据“用户登录”功能的需求描述,结合以下5个知识点来设计一系列的测试用例。

知识点1:等价类划分法,是将所有可能的输入数据划分成若干个子集,在每个子集中,如果任意一个输入数据对于揭露程序中潜在错误都具有同等效果,那么这样的子集就构成了一个等价类。后续只要从每个等价类中任意选取一个值进行测试,就可以用少量具有代表性的测试输入取得较好的测试覆盖结果。

知识点2:边界值分析法,是选取输入、输出的边界值进行测试。因为通常大量的软件错误是发生在输入或输出范围的边界上,所以需要对边界值进行重点测试,通常选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。

知识点3:显式功能性需求(Functional requirement),指的是软件本身需要实现的具体功能, 比如“正常用户使用正确的用户名和密码可以成功登录”、“非注册用户无法登录”等,这都是属于典型的显式功能性需求描述。(测试用例1-20)

知识点4:非功能性需求(Non-functional requirement)从软件测试的维度来看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。

知识点5:“穷尽测试” 是指包含了软件输入值和前提条件所有可能组合的测试方法,完成穷尽测试的系统里应该不残留任何未知的软件缺陷。(不可能)

用户登录测试用例:

一、功能测试(Function test)

1、什么都不输入,点击提交按钮,看提示信息。(非空检查)

2、输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。(正常输入)

3、输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。(错误校验)

4、登录成功后能否能否跳转到正确的页面(低)

5、用户名和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示)

6、用户名和密码,中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤)

7、记住用户名的功能

8、登陆失败后,不能记录密码的功能

9、用户名和密码前后有空格的处理

10、密码是否加密显示(星号圆点等)

11、牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用

12、登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确

13、输入密码的时候,大写键盘开启的时候要有提示信息

14、不同级别的用户,比如管理员用户和普通用户,登录系统后的权限是否正确

15、页面默认焦点是否定位在用户名的输入框中

16、快捷键 Tab 和 Enter 等,是否可以正常使用

二、界面测试(UI Test)

1、布局是否合理,2个testbox 和一个按钮是否对齐

2、testbox和按钮的长度,高度是否复合要求

3、界面的设计风格是否与UI的设计风格统一

4、界面中的文字简洁易懂,没有错别字。

三、性能压力测试(performance test)

1、单用户登录的响应时间是否小于 3 秒;

2、单用户登录时,后台请求数量是否过多;

3、高并发场景下用户登录的响应时间是否小于 5 秒;

4、高并发场景下服务端的监控指标是否符合预期;

5、高集合点并发场景下,是否存在资源死锁和不合理的资源等待;

6、长时间大量用户连续登录和登出,服务器端是否存在内存泄漏。

四、安全性测试(Security test)

1、登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)

2、用户名和密码是否通过加密的方式,发送给Web服务器

3、用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript验证

4、用户名和密码的输入框,应该屏蔽SQL注入攻击

5、用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)

6、错误登陆的次数限制(防止暴力破解)

7、考虑是否支持多用户在同一机器上登录;

8、考虑一用户在多台机器上登录

五、可用性测试(Usability Test)

1、是否可以全用键盘操作,是否有快捷键

2、输入用户名,密码后按回车,是否可以登陆

3、输入框能否可以以Tab键切换

六、兼容性测试(Compatibility Test)

1、主流的浏览器下能否显示正常已经功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)

2、不同的平台是否能正常工作,比如Windows, Mac

3、移动设备上是否正常工作,比如Iphone, Andriod

4、不同的分辨率

七、本地化测试 (Localization test)

不同语言环境下,页面的显示是否正确。

八、软件辅助性测试 (Accessibility test)

1、软件辅助功能测试是指测试软件是否向残疾用户提供足够的辅助功能

2、高对比度下能否显示正常 (视力不好的人使用)

九、其它测试

1、连续输入3次或以上错误密码,用记是否被锁一定时间(如:15分钟)?时间内不允许登录,超出时间点是否可以继续登录?

2、用户session过期后,重新登录是否还能重新返回这前session过期的页面?

3、用户名和密码输入框是事支持键盘快捷键?如:撤销、复制、粘贴等等

4、是否允许同名用户同时登录进行操作?考虑web和app同时登录

5、手机登录时,是否先判断网络可用?

6、手机登录时,是否先判断app存在新版本?

7、是否有埋点接口

总结

首先,对于高质量的软件测试,用例设计不仅需要考虑明确的显式功能性需求,还要涉及兼容性、安全性和性能等一系列的非功能性需求,这些非功能性需求对软件系统的质量有着举足轻重的作用。

其次,优秀的测试工程师必须具有宽广的知识面,才能设计出有针对性、更易于发现问题的测试用例。

最后,软件测试的用例设计是不可穷尽的,工程实践中难免受制于时间成本和经济成本,所以优秀的测试工程师需要兼顾缺陷风险和研发成本之间的平衡。

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

posted @ 2019-04-26 17:42 51testing 阅读(72) | 评论 (0) | 编辑 收藏
 
仅列出标题
共55页: First 4 5 6 7 8 9 10 11 12 Last