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

评论排行榜

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

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

15分钟快速入门Python套路!这7个案例值得一看

有人用Python从各大视频网站下视频,有人成功用Python跳一跳跳到4999,有人用Python撩妹子,还有人设计了一套代码自动抢红包...

俗话说外行看热闹,内行看门道,我们已经知道了python的火热情况,但是学一门编程语言是需要花大量精力的,所以我们最关心的还是:

Python有什么发展前景?

这门编程语言适合我吗?

我应该怎么开始?

第一个问题:Python的前景如何?

未来是人工智能的时代,有理由相信 Python 将发挥更大的作用。

2017年7月20日,国务院印发了《新一代人工智能发展规划》,提出了面向2030年我国新一代人工智能发展的指导思想、战略目标、重点任务和保障措施。

2017年 10 月 11 日,教育部决定自 2018 年 3月起,在计算机二级考试加入了「Python 语言程序设计」科目。

2018年1月16日上午,教育部召开新闻发布会,在此次「新课标」改革中,正式将人工智能、物联网、大数据处理划入新课标,这也就意味着今年秋季入学的高中生,将要开始学习 Python 了。

看到这里,你还会怀疑学习 Python 的意义吗?凡事预则立,不预则废,生在这个时代,没有理由对 Python 一无所知。

对此,我想说,完了我爱上了Python!

2017年Python已经拥有超过50%的份额,如今已经提高至65.6%。

第二个问题:Python这门编程语言适合我吗 ?

Python 好不好,事实足以说明,重点是 Python 该怎么学。在我看来,Python有5大优点,3大要素。

首先,Python有5大优点。

作为一门新手友好、功能强大、高效灵活的编程语言,无论是想进入数据分析、人工智能、网站开发这些领域,还是希望掌握第一门编程语言,都可以用 Python 来开启无限未来的无限可能!

如果你只能选读一门编程语言,那么除了 Python,还是 Python。

谁适合学 Python ?

1 - 想通过 Python 开始编程之旅。

2 - 想在数据分析(大数据/金融分析/商业分析/科学分析等)领域发展。

3 - 想在人工智能、深度学习领域发展。

4 - 已有编程基础,要利用 Python 语言提高开发能力,创建 GUI 应用、构建 2D/3D 的展示和游戏。

5 -想利用 Python 解决在工作、生活中遇到的实际问题,或者做一些好玩的事儿。

第三个问题:如何快速入门Python?

第一,明确目标。

第二,系统性掌握Python。明确了目标,还需要掌握方法,任何一门编程语言都应该先系统性掌握,而不是碎片化,毕竟一门语言包含太多细节,碎片化,顾此失彼,浅尝辄止,无法从全局把握。

当然,系统掌握Python也要讲究方法,一头扎进书本里,动辄数百页的教材难免让人望而却步,很多时候效果并不好。

第三,阶段性成果。比如,动手写一个抢票软件,爬虫,或小工具……不仅可以明确目标,还兼具趣味性,更可带来成就感,作为正向激励,形成良性循环。

接下来,我将带着大家一起深入了解Python这门语言!本文面向对象为具有一丁点编程经验的小伙伴,希望可以帮助大家快速了解Python的基本语法和部分特性。

前言

1. 基本类型和运算符

2. 变量和集合

列表

元组

字典

集合

Python数据集合类型总结

列表 定义方式 li = [1,2,3,4,“Hello World”] (列表可以包含任意基本类型)

元组 定义方式 tup = (1,2,3,4) (和列表类似,但 元组不可更改)

字典 定义方式 dic = {“one”:2,“tow”:3,“three”:0}(字典,就是字典嘛。以 key:value 方式存在)

集合 定义方式 set=set(1,2,3,4)or set = {1,2,3,4} (集合里的元素是唯一的,集合支持 & | ^ + -操作)

3. Python 逻辑运算符

4. Functions

5. Python中的类

6. Python的模块(库)

7. Python中的高级特性(生成器、装饰器:wraps)

总结:

在过去的几年里 Python 一直在快速增长,尤其是在去年跃居为排名第一的编程语言。在 Stack Ovehrflow 上,关于 Python 相关问题的访问数增长的比任何语言都快,作为世界上增长最快的主要编程语言,其相关行业薪资水平水涨船高。

而且,近两年人工智能逐渐兴起,那Python和人工智能有什么关系呢?因为人工智能使用Python语言编程有很大优势。

经数据显示目前这个方向的人才全球约30万,远远低于市场百万级别的需求,所以目前经验丰富的工程师年薪已经达到30万-50万美元的水平由于人才匮乏,人工智能工程师的年薪水涨船高,政府支持,企业倡导,所以现在正是掌握Python,入门人工智能领域的好时机。


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

posted @ 2018-10-15 17:05 51testing 阅读(403) | 评论 (0) | 编辑 收藏
 
Web安全测试知多少?这10个测试点很重要!

什么是安全测试?

安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,应用仍然能够充分的满足它的需求。

a.如何提供证据?我们通过一组失败的安全测试用例执行结果来证明web应用不满足安全需求。

b.如何看待安全测试的需求?与功能测试相比,安全测试更加依赖于需求,因为它有更多可能的输入和输出可供筛选。

真正的软件安全其实际上指的是风险管理,即我们确保软件的安全程度满足业务需要即可。

如何开展安全测试?

基于常见攻击和漏洞并结合实际添加安全测试用例,就是如何将安全测试变为日常功能测试中简单和普通的一部分的方法。

选择具有安全意义的特殊边界值,以及具有安全意义的特殊等价类,并将这些融入到我们的测试规划和测试策略过程中。

但是若在功能测试基础上进行安全测试,则需要增加大量测试用例。这意味着必须做两件事来使其便于管理:缩小关注的重点和测试自动化。

Web安全测试通常要考虑的测试点?

1、问题:没有被验证的输入
测试方法:

数据类型(字符串,整型,实数,等)
允许的字符集

最小和最大的长度
是否允许空输入
参数是否是必须的
重复是否允许
数值范围
特定的值(枚举型)
特定的模式(正则表达式)

2、问题:有问题的访问控制

测试方法:

主要用于需要验证用户身份以及权限的页面,复制该页面的url地址,关闭该页面以后,查看是否可以直接进入该复制好的地址
例:从一个页面链到另一个页面的间隙可以看到URL地址,直接输入该地址,可以看到自己没有权限的页面信息

3、错误的认证和会话管理

例:对Grid、Label、Tree view类的输入框未作验证,输入的内容会按照html语法解析出来
4、缓冲区溢出

没有加密关键数据

例:view-source:http地址可以查看源代码,在页面输入密码,页面显示的是 *****, 右键,查看源文件就可以看见刚才输入的密码

5、拒绝服务

分析:攻击者可以从一个主机产生足够多的流量来耗尽狠多应用程序,最终使程序陷入瘫痪,需要做负载均衡来对付
6、不安全的配置管理

分析:Config中的链接字符串以及用户信息,邮件,数据存储信息都需要加以保护。

程序员应该做的:配置所有的安全机制,关掉所有不使用的服务,设置角色权限帐号,使用日志和警报

分析:用户使用缓冲区溢出来破坏web应用程序的栈,通过发送特别编写的代码到web程序中,攻击者可以让web应用程序来执行任意代码

7、注入式漏洞
例:一个验证用户登陆的页面,

如果使用的sql语句为:

Select * from table A where username=’’ + username+’’ and pass word …..

Sql 输入 ‘ or 1=1 ―― 就可以不输入任何password进行攻击

8、不恰当的异常处理

分析:程序在抛出异常的时候给出了比较详细的内部错误信息,暴露了不应该显示的执行细节,网站存在潜在漏洞

9、不安全的存储

分析:帐号列表,系统不应该允许用户浏览到网站所有的帐号,如果必须要一个用户列表,推荐使用某种形式的假名(屏幕名)来指向实际的帐号。

浏览器缓存:认证和会话数据不应该作为GET的一部分来发送,应该使用POST

10、问题:跨站脚本(XSS)

分析:攻击者使用跨站脚本来发送恶意代码给没有发觉的用户,窃取他机器上的任意资料

测试方法:

HTML标签:<…>…</…>

转义字符:&(&);<(<);>(>); (空格) ;

脚本语言:

<script. language=‘javascript’>

…Alert(‘’)

</script>

特殊字符:‘ ’ < > /

最小和最大的长度

是否允许空输入

总结:

随着软件发布周期的加快,软件的安全将会变得越来越重要。如今软件快速地进入市场,安全性往往会被忽略。但是测试人员应该时刻警惕着安全测试。对于一些社交应用来说,即使有一些问题,可能也不会太严重。但是,如果是涉及财务或者是医疗软件时,对bug就不会有那么高的容忍度。bug就像蛀虫,存在漏洞就会发生不可想象的事情,给产品印象造成无法挽回的形象!


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

posted @ 2018-10-12 17:21 51testing 阅读(314) | 评论 (0) | 编辑 收藏
 
老司机经验:如何做好APP测试?你需要记住这8条法则!

一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项。但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能。

下面主要说说移动测试,对于产品的手机项目(应用软件),主要是进行系统测试。而针对手机应用软件APP的系统测试,我们通常从如下几个角度开展:功能模块测试、兼容性测试、安装和卸载测试、软件更新测试、性能测试、用户体验性测试、交叉事件测试、用户界面测试等。

作为一名软件质量保证经理,我一心投入iPhone,Android,WindowsPhone7的移动apps和移动webapps。在日常工作以及与其他移动测试专家交流的过程中,我深刻了解了移动测试工作的困难。所以,基于我的工作经验总结了这篇文章,希望可以帮助大家解决一些实践中的问题。有关APP测试的重点,整理一下贴出来给大家看看。

首先看看下面这个图:

这幅图应该能够很明确的展示APP测试的流程了。然后需要说明的是执行测试那一段。因为用的xmind,字数太多图看起来就太小了,所以在这里说一下每个阶段对应的东西。

APP测试的流程

1、UI测试

检查UI图片,icon,文字,布局等UI元素与效果图是否一致。一般UI方面不会存在特别严重的问题,作为建议提给产品就好了。

2、功能测试

检验功能是否符合需求,涉及到UI层,接口,数据,服务端,代码逻辑等。功能方面的缺陷一般被定义为严重缺陷,必须修复。

3、健壮性测试

检验产品在出现异常时的处理机制。同时需要检验出现这些异常场景,或者是比较极限的情况的时候会否出现crash、anr的情况。需要注意一些极限和异常场景,还有中断和弱网的测试。

4、适配

检验产品的兼容性,不同的硬件设备,分辨率,操作系统,屏幕尺寸,手机型号等。安卓这一块儿是不太好做的,国内的定制系统太多了,一般方法都是针对主流机型进行测试。

5、稳定性测试

这里通常使用的是monkey进行测试。之前我也是对monkey不屑一顾,后来经过前辈指点也是发现了它的强大之处。目前也属于正在学习的阶段。主要手段还是通过伪随机事件流,进行大量的点击,滑动等操作,主要是用来检测产品中隐藏的crash、anr的缺陷。

6、性能测试

客户端性能:主要监测,客户端运行时设备的CPU,GPU,流量,耗电量,响应时间等数据。进行数据分析,针对客户端对产品进行优化,从而提升产品的竞争力。再深入的发掘可以分析客户端的性能瓶颈,甚至定位出影响客户端性能的代码。

服务端性能:主要监测,I/O,吞吐量,并发,压力,负载等数据。针对测试结果进行分析,寻找性能瓶颈,完成对性能的优化。主要目的是检查服务端的稳定性,能否达到预期目标,完成预期任务。

7、回归测试

回归测试,主要是针对开发修复的缺陷进行测试。评估改动的影响范围,有目标有针对性的进行测试。其实还需要对老版本的功能、数据等进行回归。

8、上线测试

在发布上线之后,要在生产环境上进行最后一轮的系统测试。我一般是把前面所有做过的东西全部在做一次。

App测试中ios和Android的区别

1、Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;
2、多分辨率测试,Android端20多种,ios较少;
3、手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
4、操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
5、push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
6、安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有appstore,iTunes和testflight下载;
7、升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)
另外:对于测试还需要注意一下几点:
1、并发(中断)测试:闹铃弹出框提示,另一个应用的启动、视频音频的播放,来电、用户正在输入等,语音、录音等的播放时强制其他正在播放的要暂停;
2、数据来源的测试:输入,选择、复制、语音输入,安装不同输入法输入等;
3、push(推送)测试:在开关机、待机状态下执行推送,消息先死及其推送跳转的正确性;应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确;推送消息阅读前后数字的变化是否正确;多条推送的合集的显示和跳转是否正确;
4、分享跳转:分享后的文案是否正确;分享后跳转是否正确,显示的消息来源是否正确;
5、触屏测试:同时触摸不同的位置或者同时进行不同操作,查看客户端的处理情况,是否会crash等

总结:

也许在工作中,你会觉得开发人员不重视我们做测试的,甚至抱怨测试地位很低等等。其实这个现象挺正常的,当我们基础的测试工作没有做好,线上漏测多,测试结论经常被推翻时,我们在测试方向上的专业性就会受到质疑,人家都不相信你了怎样还能重视你?“学如逆水行舟,不进则退”,资深测试工程师都在不断学习,所以,提升自己的测试水平至关重要!

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

posted @ 2018-10-11 17:50 51testing 阅读(144) | 评论 (0) | 编辑 收藏
 
一名资深产品经理十年工作总结:我眼中的测试及测试员!

之前有同学希望我写写产品经理怎么做测试,作为一名混迹互联网十余年,先后从事过开发,项目管理,产品/移动产品的老鸟,正好,就此机会我权且写写我理解或者我认为的测试。测试,其实就是产品上线之前我们按照一定规则对产品进行检查的工作,确保我们的产品在上线之后没有重大和明显的BUG,并保证用户可以流畅正常地使用我们的产品。我从自己的工作经历出发,谈谈自己对测试及测试员的理解,有不对的地方欢迎大家指正。

产品心中的测试人员形象?

一提到测试人员,我心中出现什么形象呢?提到测试人员,我脑子里的印象是两极的,一个印象是上线时间来不及了,总是有人提议压缩一下测试时间,产品成功了,感谢名单上测试总是排在后面,产品有bug了,总是测试人员第一个顶包,似乎测试就是那口最大的黑锅,和背后的无名英雄。还有一个印象就是,孙悟空,十八般武艺样样精通,似乎那火眼金睛一瞪,什么bug都逃不过他的火眼金睛,上线前,只要他按下那绿色的小按钮,Greenlight, Bingo! 定心丸下肚,产品经理的心就先放下了一大半。

到底什么是测试人员?

其实一想到测试人员,我脑子里首先出现的词就是QA, 尽管我的很多测试的朋友已经跟我解释多遍,QA, Tester, SDET不是一回事,QA是质量保证,不仅仅做测试的工作,还要从流程等多个角度保证整个产品和项目的质量,而QA也不仅仅存在于IT行业,其他行业也可以有专职的QA。

Tester便是我们一般理解的专职测试人员了,可能是专职的纯手工测试,也可能是半自动化的测试。

而SDET这个角色似乎最早是从微软出来的,意思是测试开发工程师,认为他们不仅仅会测试,更会写代码做开发,更重要的职责是测试框架和工具的开发,因为会写代码,所以这个角色似乎被很多的测试朋友所认同。

好吧,我得说他们的努力没白费,这些个概念我是牢牢记住了,可是洗脑并不成功,因为这些年来在我眼中的测试人员始终分为两类:普通的测试,优秀的测试。

产品经理也要做测试?

其实作为一名产品经理,这个需要多种技能加身的岗位,在一些人员配备不足的公司中,可能需要同时担任产品和测试两个工作。

做了产品经理这么多年,关于如何更好完成测试工作,我有十个方法分享给大家。

1.UI设计测试:页面所包含的所有字段,图片,图标等界面元素,产品经理要和设计人员一起根据设计要求进行验收和反馈。
2.测试用例测试:根据prd撰写测试用列(可按照正常流程/异常流程/分支流程,并使用因果图法遍历功能),测试用例需要遍历所有功能,测试时根据测试用例进行,也更方便进行bug的定位。
3.错误推测法:根据经验和直觉推测出可能会出现的bug,并对此设计测试用例,作为补充测试用例的一种方式。
4.字符测试:根据特殊字符,长度,表情,中英文,符号,阀值限制等要求进行输入测试。
5.缓存测试:从缓存的数据和大小(峰值设置),缓存时间,缓存环境(有无网络),缓存存储方式等几个方面进行。
6.最多/少数测试:阀值,观察系统的反应及显示(一般指压力测试,需借助一些平台进行操作)。
7.多环境/外部环境测试:同一系统不同版本,不同屏幕分辨率,不同厂家设备,GPS(关闭或不佳),摄像头,加载时长等情况的测试。
8.准确性测试:搜索数据结果的相关性和准确性。
9.排序测试:根据产品设计规则,进行排序测试和调整。(包括消息列表,产品列表,时间等)
10.账号测试:账号首次登录,新建账号登录,同一账号不同机型多次登录,同一设备不同账号登录时数据显示情况测试。

如何成为产品眼中合格的测试人员?

上面是我对过往工作中对测试和测试员的一点点回顾和总结,当然我的立场没法提供一个长长的check list:

1.必须熟练掌握一门编程语言

2.必须熟练应用一个自动化测试框架

3.必须会熟练使用loadrunner进行性能测试

4.必须熟练使用calabash或appium进行手机app的自动化测试…

只能从我的角度试图去总结,是什么样的特征或态度最终区分了一个优秀的测试和一个资深的测试。

测试是一项重要的工作,需要测试人员的耐心、创造力、观察力。产品经理虽然不是也不太可能成为专业的测试人员,但是仍然需求对这项工作予以重视。

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

posted @ 2018-10-10 17:29 51testing 阅读(136) | 评论 (0) | 编辑 收藏
 
10分钟玩转Python+Selenium自动化测试,快速入门通道!

最近浏览了很多同学的简历,大部分都有自动化测试,基本都有selenium。但很少有人真正弄清selenium。一个是selenium的提供了很多组件,让人容易上手,然后很多人就没有然后了。二是selenium的更新伴随着工具的合并,很多人压根没高清自己用的是selenium RC 还是 webdriver。

根据最近面试的情况,把很多同学在实践selenium的时候没弄清的问题总结了一下,顺便教大家如何快速玩转selenium!

现在测试工程师都在聊什么?

1、python会了吗最近?

2、selenium自动化你们团队进度怎么样?

3、你们自动化框架应用的如何?

4、一直搞手工职业发展会有瓶颈啊,测试真心要往测试开发走啊,搞自动化……

5、我们招聘自动化工程师都10K起,但是到目前还没有招到合适的人选哦,赶紧也学学自动化,涨薪或跳槽去……

自动化工程师的规划之路

如何玩转Selenium自动化?

目前市场上的自动化工具很多,selenium只是其中的一个突出代表。近几年随着开源风、selenium的稳定、版本更新等越来受到市场的欢迎。当然这里不可忽略Python的作用哦!

如果你是小白,想学习自动化,强烈推荐python+selenium。

不要一提代码就恐怖哦(很多测试工程师的通病),其实python与selenium就是一个【纸老虎】,要勇于面对,勇于挑战哦,要不自己没有技术上的竞争力,谁来给你涨薪呢?

!、python上手容易,语法简单、大量第三方模块的支持- selenium针对b/s支持非常好,目前各大主流浏览器均支持。当然我还是喜欢FireFox。

学习selenium,IDE部分不是主要的点,重点放在webdriver API部分。

2、千万不要把大部分精力放在IDE部分哦

前端知识要适当储备:html、css、js基础等,但是不要把自己搞成前端工程师哦,当然那样对你也是非常有益的。

Selenium是什么?

Selenium是什么,相信从事自动化测试的同学或者有过Python爬虫经历的同学都会有了解。

Selenium是一个Web自动化测试软件,正如Selenium官网所言:Selenium主要是为了测试目的而进行自动化的Web应用程序,但是当然并不限于此,一些基于Web的无聊的管理任务也可以使用Selenium进行自动化。嗯,比如爬虫。

网络爬虫应该是Selenium除了Web自动化测试之外,最为人所熟知的应用场景了,它在面对一些JS生成的动态网页时能够有效的获取到页面上的数据。可以说是Python网络爬虫的必备良品。

Python+selenium环境搭建

1、Python环境安装

· 下载和安装Python

· 设置环境变量:已管理员身份运行cmd,输入如下命令:path=%path%;C:\Python27

· 运行python:在命令行中输入python运行python

2、PIP的安装

· pip类似RedHat里面的yum,安装Python包非常方便。(点击图片即可下载)

·下载后解压,使用命令行进入解压出来的目录,运行命令:python setup.py install

· 增加环境变量:命令行中输入path=%path%;C:\Python27\Scripts

· 看下是否安装成功:输入pip -v

3、安装selenium for python

· 命令行输入:pip install selenium(点击图片即可下载)

·验证是否安装成功:在cmd输入python进入python环境,然后输入 from selenium import webdriver,如果不报错就代表selenium安装成功。

4、PyCharm的安装与使用

· 在Python开发过程中,比较流行,很优秀的一款IDE工具-PyCharm,这里关于它的介绍就一句话,它就相当于Java开发中的Eclipse软件一样。(点击图片即可下载)

· 创建工程 ·

5、通过脚本打开关闭浏览器

要用selenium打开浏览器。首先需要去下载一个driver插件(不同的浏览器对应不同的driver插件),这里以chrome为例,下载好后将该插件放在Python安装目录下即可。

这样,一个完整的测试框架和Demo就搭建完成了,你学会了吗?

使用selenium做自动化测试常见问题

1、selenium中如何判断元素是否存在?

答:isElementPresent

2、selenium中hidden或者是display = none的元素是否可以定位到?

答:不可以定位到

3、自动化测试的时候是不是需要连接数据库做数据校验?

答:UI自动化不需要,接口测试会需要

4、webdriver可以用来做接口测试吗?

答:有一定难度,不推荐做接口测试

5、如何去定位页面上动态加载的元素?

答:触发动态加载元素的事件,直至动态元素出现,进行定位

6、如何去定位属性动态变化的元素?

答:xpath或者css通过同级、父级、子级进行定位

7、点击链接以后,selenium是否会自动等待该页面加载完毕?

答:会的等待该页面加载完的

8、自动化测试用例从哪里来?

答:手工用例中抽取出来,可以参考自动化用例的执行策略

9、你觉得自动化测试最大的缺陷是什么?

答:不稳定、可靠性、不易维护、成本与收益不成正比

10、什么是分层测试?

答:UI测试、集成/接口测试、单元测试这些都可以算做分层测试

总结:

随着对测试开发的逐渐流行,测试人员的代码能力也在提升。在selenium的学习中,更需要掌握webdriver的api,探索selenium的更多特性。

没有过不去的火焰山,没有吭不掉的技术难题,只要你敢,肯下功夫,都会取得最终的胜利。

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

posted @ 2018-10-09 17:37 51testing 阅读(213) | 评论 (0) | 编辑 收藏
 
不知道这5种下划线的含义,你就不算真的会Python!

什么是 Python? Python 之父 Guido van Rossum 说:Python是一种高级程序语言,其核心设计哲学是代码可读性和语法,能够让程序员用很少的代码来表达自己的想法。

对于我来说,学习 Python 的首要原因是,Python 是一种可以优雅编程的语言。它能够简单自然地写出代码和实现我的想法。

另一个原因是我们可以将 Python 用在很多地方:人工智能、数据科学、Web 开发和机器学习等都可以使用 Python 来开发。

国庆期间后台有小伙伴留言问我:“Python变量和方法名称中单下划线和双下划线的含义是什么?”我想一些初学者或者经验尚浅的朋友一定也会有这个疑问,所以今天我就来跟大家聊聊Python中这个很重要的“下划线”!

单下划线和双下划线在Python变量和方法名称中都各有其含义。有一些含义仅仅是依照约定,被视作是对程序员的提示 - 而有一些含义是由Python解释器严格执行的。

那么,下面就为大家介绍一下Python中单下划线和双下划线("dunder")的各种含义和命名约定,名称修饰(name mangling)的工作原理,以及它如何影响你自己的Python类。

下面将讨论以下五种下划线模式和命名约定,以及它们如何影响Python程序的行为:

单前导下划线:_var

单末尾下划线:var_

双前导下划线:__var

双前导和末尾下划线:__var__

单下划线:_

1、单前导下划线 _var

程序员使用名称前的单下划线,用于指定该名称属性为“私有”。这有点类似于惯例,为了使其他人(或你自己)使用这些代码时将会知道以“_”开头的名称只供内部使用。正如Python文档中所述:

以下划线“_”为前缀的名称(如_spam)应该被视为API中非公开的部分(不管是函数、方法还是数据成员)。此时,应该将它们看作是一种实现细节,在修改它们时无需对外部通知。

正如上面所说,这确实类似一种惯例,因为它对解释器来说确实有一定的意义,如果你写了代码“from <模块/包名> import *”,那么以“_”开头的名称都不会被导入,除非模块或包中的“__all__”列表显式地包含了它们。

看看下面的例子:

class Test:
def __init__(self):
self.foo = 11
self._bar = 23

如果你实例化此类,并尝试访问在__init__构造函数中定义的foo和_bar属性,会发生什么情况? 让我们来看看:

>>> t = Test()
>>> t.foo
11
>>> t._bar
23

你会看到_bar中的单个下划线并没有阻止我们“进入”类并访问该变量的值。

这是因为Python中的单个下划线前缀仅仅是一个约定 - 至少相对于变量和方法名而言。

但是,前导下划线的确会影响从模块中导入名称的方式。

假设你在一个名为my_module的模块中有以下代码:

# This is my_module.py:
def external_func():
return 23
def _internal_func():
return 42

现在,如果使用通配符从模块中导入所有名称,则Python不会导入带有前导下划线的名称(除非模块定义了覆盖此行为的__all__列表):

>>> from my_module import *
>>> external_func()
23
>>> _internal_func()
NameError: "name '_internal_func' is not defined"

顺便说一下,应该避免通配符导入,因为它们使名称空间中存在哪些名称不清楚。 为了清楚起见,坚持常规导入更好。

与通配符导入不同,常规导入不受前导单个下划线命名约定的影响:

>>> import my_module
>>> my_module.external_func()
23
>>> my_module._internal_func()
42

我们知道这一点可能有点令人困惑。 如果你遵循PEP 8推荐,避免通配符导入,那么你真正需要记住的只有这个:

单个下划线是一个Python命名约定,表示这个名称是供内部使用的。 它通常不由Python解释器强制执行,仅仅作为一种对程序员的提示。

2、单末尾下划线 var_

有时候,一个变量的最合适的名称已经被一个关键字所占用。 因此,像class或def这样的名称不能用作Python中的变量名称。 在这种情况下,你可以附加一个下划线来解决命名冲突:

>>> def make_object(name, class):
SyntaxError: "invalid syntax"
>>> def make_object(name, class_):
... pass

总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。 PEP 8解释了这个约定。

3、双前导下划线 __var

名称(具体为一个方法名)前双下划线(__)的用法并不是一种惯例,对解释器来说它有特定的意义。Python中的这种用法是为了避免与子类定义的名称冲突。Python文档指出,“__spam”这种形式(至少两个前导下划线,最多一个后续下划线)的任何标识符将会被“_classname__spam”这种形式原文取代,在这里“classname”是去掉前导下划线的当前类名。

例如下面的例子:

>>> class A(object):

... def _internal_use(self):

... pass

... def __method_name(self):

... pass

...

>>> dir(A())

['_A__method_name', ..., '_internal_use']

正如所预料的,“_internal_use”并未改变,而“__method_name”却被变成了“_ClassName__method_name”。此时,如果你创建A的一个子类B,那么你将不能轻易地覆写A中的方法“__method_name”。

>>> class B(A):

... def __method_name(self):

... pass

...

>>> dir(B())

['_A__method_name', '_B__method_name', ..., '_internal_use']

这里的功能几乎和Java中的final方法和C++类中标准方法(非虚方法)一样。

4、双前导和双末尾下划线 _var_

也许令人惊讶的是,如果一个名字同时以双下划线开始和结束,则不会应用名称修饰。 由双下划线前缀和后缀包围的变量不会被Python解释器修改:

class PrefixPostfixTest:
def __init__(self):
self.__bam__ = 42

>>> PrefixPostfixTest().__bam__
42

但是,Python保留了有双前导和双末尾下划线的名称,用于特殊用途。 这样的例子有,__init__对象构造函数,或__call__ --- 它使得一个对象可以被调用。

这些dunder方法通常被称为神奇方法 - 但Python社区中的许多人都不喜欢这种方法。

最好避免在自己的程序中使用以双下划线(“dunders”)开头和结尾的名称,以避免与将来Python语言的变化产生冲突。

5、单下划线 _

通常情况下,会在以下3种场景中使用:

1、在解释器中:在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果。这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用。

>>> _ Traceback (most recent call last):

File "<stdin>", line 1, in <module>

NameError: name '_' is not defined

>>> 42

>>> _

42

>>> 'alright!' if _ else ':('

'alright!'

>>> _

'alright!'

2、作为一个名称:这与上面一点稍微有些联系,此时“_”作为临时性的名称使用。这样,当其他人阅读你的代码时将会知道,你分配了一个特定的名称,但是并不会在后面再次用到该名称。例如,下面的例子中,你可能对循环计数中的实际值并不感兴趣,此时就可以使用“_”。

n = 42

for _ in range(n):

do_something()

3、国际化:也许你也曾看到”_“会被作为一个函数来使用。这种情况下,它通常用于实现国际化和本地化字符串之间翻译查找的函数名称,这似乎源自并遵循相应的C约定。

例如,在Django文档“转换”章节中,你将能看到如下代码:

from django.utils.translation import ugettext as _

from django.http import HttpResponse

def my_view(request):

output = _("Welcome to my site.")

return HttpResponse(output)

可以发现,场景二和场景三中的使用方法可能会相互冲突,所以我们需要避免在使用“_”作为国际化查找转换功能的代码块中同时使用“_”作为临时名称。

总结:

Python下划线命名模式 - 小结

以下是一个简短的小结,即“速查表”,罗列了本文中谈到的五种Python下划线模式的含义:

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

posted @ 2018-10-08 18:26 51testing 阅读(175) | 评论 (0) | 编辑 收藏
 
测试人必须了解的软件测试流程及5大测试过程模型,经典干货分享!

软件测试随着软件的产生而产生的,近年来,软件行业的迅猛发展,让软件测试停在手工测试的水平已不能满足软件项目的需要。要了解软件测试,首先要知道软件测试工作的流程是怎样的。

软件测试流程:需求分析阶段-软件设计和编码阶段(进行单元测试)-集成、系统、验收测试阶段。

软件测试模型:

传统:项目计划——需求分析——软件设计——程序开发——软件测试——集成维护

V模型:需求分析-概要设计-详细设计-软件编码-单元测试-集成测试-系统测试-验收测试

W模型:用户需求-需求分析-概要设计-详细设计-编码-单元测试-集成测试-验收测试-单元测试设计-集成测试设计-系统测试设计-验收测试设计-集成-实施-交付

X模型:程序片段1-测试设计-工具配置-执行测试-编码完成-执行测试-工具配置-测试设计-程序片段N;封版-执行测试-测试设计-工具配置-迭代1...N-探索式测试-执行测试

H模型:测试准备-测试就绪点-测试执行-测试流程-其他流程

软件测试W模型

软件测试流程:

需求分析:

需求分析由产品人员制定,他们要做的不是一份简单的文档,而是细化每一个功能的细节,每一个按钮的位置,对于稍大或复杂一点的需求都进行建模。

测试计划:

测试计划(TestPlan)一般由测试负责人来编写。

测试计划的依据主要是项目开发计划和测试需求分析结果而制定。如背景,依据,资源,策略,日程等等。

测试设计:

测试设计主要包括测试用例编写和测试场景设计两方面。

测试环境搭建:

不同软件产品对测试环境有着不同的要求。

如C/S及B/S架构相关的软件产品,那么对不同操作系统,如Windows系列、unix、linux甚至苹果OS等,这些测试环境都是必须的。

而对于一些嵌入式软件,如手机软件,如果我们想测试一下有关功能模块的耗电情况,手机待机时间等,那么我们可能就需要搭建相应的电流测试环境了。当然测试中对于如手机网络等环境都有所要求。

测试执行:

测试执行过程又可以分为以下阶段:

根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试。
体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。

单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。
黑盒测试不考虑程序内部结构和逻辑结构,主要是用来测试系统的功能是否满足需求规格说明书。一般会有一个输入值,一个输入值,和期望值做比较。
白盒测试主要应用在单元测试阶段,主要是对代码级的测试,针对程序内部逻辑结构,测试手段有:语句覆盖、判定覆盖、条件覆盖、路径覆盖、条件组合覆盖
集成测试主要用来测试模块与模块之间的接口,同时还要测试一些主要业务功能。
系统测试是在经过以上各阶段测试确认之后,把系统完整地模拟客户环境来进行的测试。

测试记录:

缺陷记录总的说来包括两方面:由谁提交和缺陷描述。

一般而言,缺陷都是谁测试谁提交,当然有些公司可能为了保证所提交缺陷的质量,还会在提交前进行缺陷评估,以确保所提交的缺陷的准确性。

另外,一个版本软件测试完毕,还要根据测试情况出份测试报告,这也是所要经过的一个环节。

缺陷管理:

缺陷管理方面,很多公司都采取缺陷管理工具来进行管理,常见缺陷管理工具有Test Director、Bugfree等。

软件评估:

这里评估指软件经过一轮又一轮测试后,确认软件无重大问题或者问题很少的情况下,对准备发给客户的软件进行评估,以确定是否能够发行给客户或投放市场。

软件评估小组一般由项目负责人、营销人员、部门经理等组成,也可能是由客户指定的第三方人员组成。

测试总结:

每个版本有每个版本,每个阶段的测试总结,当项目完成RTM后,一般要对整个项目做个回顾总结,看有哪些做的不足的地方,有哪些经验可以对今后的测试工作做借鉴使用,等等。

测试总结无严格格式、字数限制。

测试维护:

由于测试的不完全性,当软件正式release后,客户在使用过程中,难免遇到一些问题,有的甚至是严重性的问题,这就需要修改有关问题,再对软件进行测试、评估、发行。

流程分析:

我们来看测试的工作内容,测试计划、测试用例、测试结论、测试报告、验收方案、问题的提交跟踪。

其实,我们真用于测试的时间是非常少的,在一周的时间,也许只有一天或不到一天的时间是在进行测试的。

测试人员只有在测试的时候才会体现出他的价值。而大部分工作却不能体现他的价值。

总结:

软件测试,关注的是在整个软件生命周期中,各个阶段的测试活动。

通过对各个阶段的过程质量把控,从而提高产品的测试质量。产品的质量并不是测试能决定的,而是整个项目构建过程中,通过一次次的优化过程,不断的总结成长,是整个项目团队决定的。

不同的工种都在这个过程中起到举足轻重的作用,而全程软件测试强调不断提高每个阶段的质量,最终提高项目团队的综合能力,从而提高产品质量。

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

posted @ 2018-09-30 16:14 51testing 阅读(134) | 评论 (0) | 编辑 收藏
 
怎么玩转App测试?自动化测试工具选择方法汇总!

现在app的开发已经是火爆的一个开发趋势,手机应用的测试也显得格外的重要,现在大部分还是停留在手动测试的状态。我们知道手机app开发,要适应不同的设备,比如一个Android app要适应不同的版本,不仅是要支持最新的版本,旧的版本也需要支持,这也就导致了手动测试需要购买N部android手机来手动测试,如何应对繁琐的手机测试呢?当然是使手机测试自动化。

经常有新手或者经验尚浅的朋友在后台给我留言:手机App功能测试用什么自动化工具啊?这些多测试工具到底用于什么测试啊?针对APP测试如何选择自动化测试工具这个问题,今天我来个大家做一个汇总。

功能测试

功能测试最开始最基础的就是分析需求编写测试用例,测试是把握质量的守关人,保证不漏测的第一步就是要编写尽可能全面的测试用例。基础打牢后多实践。测试是讲究经验的职业,从简单需求开始,制定测试计划,编写用例执行,执行过程及时调整计划爆出风险和进度给团队知道非常重要。而且现在是自动化的时代,你可以学习使用一些自动化测试工具来进行功能自动化测试。

自动化工具 
a) 轻量接口自动化测试 
jmeter
b) APP UI层面的自动化 
android:UI Automator Viewer,Android Junit,Instrumentation,UIAutomator, 
iOS:基于Instrument的iOS UI自动化

测试方法

根据软件说明或用户需求验证App的各个功能实现,采用如下方法实现并评估功能测试过程:

1)采用时间、地点、对象、行为和背景五元素或业务分析等方法分析、提炼App的用户使用场景,对比说明或需求,整理出内在、外在及非功能直接相关的需求,构建测试点,并明确测试标准。

2)根据被测功能点的特性列出相应类型的测试用例对其进行覆盖,如:设计输入的地方需要考虑等价、边界、负面、异常、非法、场景回滚、关联测试等测试类型对其进行覆盖。

3)在测试实现的各个阶段跟踪测试实现与需求输入的覆盖情况,及时修正业务或需求理解错误。

性能测试

自动化工具
a) Web前端性能测试 
网络抓包工具:Wireshark 
网页文件大小 
webpagetest 
pagespeed insight 
chrome adb 
b) APP端性能测试 
Android内存占用分析:MAT 
iOS内存问题分析:ARC模式 
Android WebView性能分析: 
iOS WebView性能分析 
c) 后台服务性能测试 
负载,压力,耐久性 
可拓展性,基准 
工具:apacheAB,Jmeter,LoadRunner

测试方法:

1)响应能力测试:测试App中的各类操作是否满足用户响应时间要求。

App安装、卸载的响应时间

App各类功能性操作的响应时间

2)压力测试,反复/长期操作下,系统资源是否占用异常。

App反复进行安装卸载,检查系统资源是否正常

其他功能反复进行操作,检查系统资源是否正常

专项测试

APP启动快不快?跑起来是不是常常Crash?是否有卡顿?这些问题可以靠专项测试来解决。专项测试包括CPU、内存、帧率、流量、电量等;这块有很多工具和方法,如果能做好专项测试,那在业界是很受欢迎的。在大公司,如果APP有一个大的版本要发布,通常是需要做全面的专项测试的。
a) 兼容性测试 
手工测试:操作系统,分辨率,rom,网络类型 
云平台:testin,脚本编写,Android。

测试方法

主要测试内部和外部兼容性

1)与本地及主流App是否兼容

2)与各种设备是否兼容,若有跨系统支持则需要检验是否在个系统下,各种行为是否一致。

不同手机屏幕分标率的兼容性

不同手机品牌的兼容性
b) 流量测试 
Android自带的流量管理, 
iOS自带的Network

tcpdump抓包 
WiFi代理抓包:Fiddler 
流量节省方法:压缩数据,json优于xml;WebP优于传统的JPG,PNG;控制访问的频次;只获取必要的数据;缓存; 
c) 电量测试 
基于测试设备的方法,购买电量表进行测试。 
GSam Battery Monitoe Pro 
iOS基于Instrument Energy工具

d) 弱网络测试 
手机自带的网络状况模拟工具 
基于代理的弱网络的模拟: 
工具:windows:Network Delay Simulator 
Mac:Network Link Conditioner

实地测试 
e) 稳定性测试 
Android:Monkey 
模糊测试 
f) 安全测试 
安装包:反编译,签名,完整性校验,权限。 
敏感信息测试: 
键盘劫持 
账户安全 
数据加密 
组件安全测试 
服务端接口测试:SQL注入,XSS跨站脚本攻击,CSRF跨站请求伪造,越权访问。 
g) 环境相关的测试 
干扰测试 
权限测试 
边界情况 
定位测试

辅助测试方法 
a) 代码静态扫描 
Android工具:FindBugs,Lint, 
iOS工具:Analyze 
b) 代码覆盖率测试 
现有框架:emma,jacoco 
c) 接口Mock方法 
接口异常模拟 
d) AOP测试方法 
AspectJ 
Aspects

总结:

由于移动互联网的应用太多,更新频繁,无论如何不是个人经验所能覆盖完全的。以上几点,仅从我测试过的APP进行总结,仅为APP应用测试新人提供思考方向。希望看完本文,您对于移动应用的测试多了一些了解。

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

posted @ 2018-09-28 18:13 51testing 阅读(118) | 评论 (0) | 编辑 收藏
 
软件为什么要做异常测试?测试员必知的22个测试点总结!

软件交付最终用户使用之前,需要进行各种类型的测试,其中就包括异常测试。

什么是异常测试?

异常测试,是检测系统对异常情况的处理。异常测试覆盖硬件或软件异常时的处理。测试方应通过人为制造错误情况测试系统对错误操作、错误报文的反应,检查程序中的屏幕或页面是否给出了清晰且充分的提示或约束;一旦出现错误情况,系统是否能正常报告,并检查系统的错误提示是否清晰且充分;测试系统是否处理了用户的异常操作,还是造成死机或处理错误。

这里我们只针对异常测试案例的设计进行讨论。为了验证软件的健壮性、可靠性,我们需要对软件进行异常测试,设计软件异常测试的测试用例。为了更清晰的分析和解决问题,我们从四个方面入手,他们分别是:业务需求、操作需求、标准需求和经验需求。下面我们就从这四个方面详细阐述如何设计异常测试用例。

异常测试的测试点

从业务需求方面:

1、特殊业务流程测试

测试软件不按照正规的流程,而是按照可能的但非正规的业务流程运行,是否会生成错误数据,或者造成原有数据的错误,甚至造成系统的瘫痪;

2、压力测试

主要是检查系统某些关键业务在极限情况下运行的能力,测试在这种情况下系统的运行、处理数据的情况,是否会造成系统瘫痪

3、修改系统的重要配置信息测试

在软件的配置界面进行重要信息的修改或删除,测试系统是否有相关限制提示,并测试如果修改错误,系统是否能够进行错误提示,引导用户修改,而不至于系统瘫痪

4、修改系统环境变量

在系统运行过程中,人为修改系统使用的环境变量参数,观察系统的反应

5、将系统的用户名和密码或权限进行修改

例如在系统运行过程中,修改数据库访问用户名或密码,观察系统的反应

6、对系统产品进行升级

老系统仍然在运行过程中,对系统进行升级操作

从操作需求方面:

1、单引号操作

大多数基于SQL的数据库数据库数据库数据库系统在用户存储包含一个英文单引号的信息时会出现问题,所以每一个可以接受文字数字型的条目都要有包含一个或多个单引号的文本案例。当然,这类问题还应该包括英文双引号、&、<、>等特殊字符。在测试的时候应该注意其之前的提示和错误操作之后的恢复与补救措施等

2、必填项输入测试

测试每一个功能说明书上指出的屏幕上必须输入数据的字段和屏幕上每一个被说明为必须输入的字段,以保证它强制要求你在字段中输入数据。测试其如果没有输入相关数据的提示和后续操作

3、特殊字段类型测试

准备每一个功能说明书或界面中规定的特殊数据输入要求(身份证、日期、电话号码、邮编等)的字段的测试案例,输入的数据包括它不应该接受的数据类型,测试软件对错误输入的提示和后续操作

4、日期类型测试

日期类型要测试其边界值和日期格式类型的有效性测试。对于日期类型的边界值可能根据数据库不同而不同,比如sql server的最小日期是1753年1月1日;而对于有效性最常用的就是闰年的有效日期问题,准备这类测试用例来测试软件对于错误输入的提示和后续操作

5、web会话测试

对于采用b/s结构的软件,应该注意web会话测试。比如:在空白的浏览器中输入比较敏感的页面的URL,软件是否有相应的提示、强调应该先进行登录才能访问该界面

从标准需求方面:

1、数据库服务器死机测试

在测试过程中强行关闭软件的数据库服务器或者用其它方式导致数据库死机,测试被测系统的提示是否准确以及其后的相关补救提示或操作

2、进行数据迁移工作

在系统运行过程中,对系统数据库进行迁移工作

3、数据表毁坏测试

非法删除或修改数据库中的表数据或者表,测试被测系统的提示是否准确以及其后的相关补救提示或操作

4、网络故障测试

在测试中中断网络或者人工增加网络流量,测试被测系统的提示是否准确以及其后的相关补救提示或操作

5、在对应的服务器上安装其他相关软件

在系统运行过程中,服务器上安装新的杀毒软件或者进行病毒库的更新,或更新或安装新的浏览器软件,或更新或安装新的输入法软件,或更新或安装新的办公软件

6、端口号被占用

不同服务使用了同一端口号

从经验需求方面:

1、文件丢失测试

强行删除被测软件的一些文件,测试被测系统的提示是否准确以及其后的相关补救提示或操作;

2、文件丢失操作

在系统运行过程中,将系统对应的安装文件夹或生成文件夹进行移动或删除或修改文件夹的属性

3、服务器资源测试

通过人为手段,增加软件数据库服务器、web服务器或者中间件服务器等相关服务器的硬件资源,如:cpu、内存、硬盘等的负载,测试被测系统的反应和其后的补救提示或操作;

4、断电测试

在测试期间,对部分或者所有相关软件测试机器进行断电测试,测试软件的恢复能力

5、服务异常终止

通过人为手段将数据库服务、web服务等服务进行暂停,观察系统的反应

总结:

只有通过异常测试的软件产品,才可以保证软件在正式上线后长时间的保持良好的运营状态,给最终用户以信心。异常测试的结果也有助于为我们进一步的系统优化设计积累经验,设计和测试是一个相互反馈的过程。

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

posted @ 2018-09-27 17:40 51testing 阅读(971) | 评论 (0) | 编辑 收藏
 
人工智能,会取代软件测试工程师吗?

近几年,人工智能逐渐兴起,AI 助手、无人驾驶汽车、云端全功能芯片...在媒体领域,机器人写稿、媒体大脑、智能检校等不断涌。

2016年,阿尔法狗崭露头角,2017年5月,阿尔法狗3:0击败世界冠军柯洁,人工智能被推上风口浪尖。
2016-2017世界质量报告上提出:在人工智能高速发展的情况下,软件测试领域或许将迎来一个新的时代—人工智能时代。

不过,对于软件测试,人工智能是否能够替代软件测试工程师?人工智能本身如何测试?下面我们就来聊一聊这个问题。

首先,先了解下软件测试的背景

软件测试对于确保使用应用程序客户的满意度是十分必要的。

测试是指在一些特定条件下观察应用程序,且在测试过程中测试人员已经知道要实施相同的门槛和风险。

同时,测试有助于保护应用程序避免潜在的可能会对应用程序和将来的组织造成危害的危险因素。而软件测试的下一步是软件调试,但只有在经过彻底的测试之后才能进行软件调试。

什么是人工智能?

任何一个复杂任务,如果能够被测试者不假思索地解决,都是人工智能的候选之一。

人工智能的一般定义是指,机器能够独立理解环境并执行输入数据,完成智能工作和学习如何自动提高自身工作水平的能力。

具有智能特性的测试工具
Appvance IQ

Appvance IQ根据应用程序的映射和对实际用户的活动分析,学习并生成自动化测试脚本,生成的脚本可以准确地表示用户曾经的行为及想要进行的行为。Appvance IQ使用应用程、序蓝图作为被测应用程序的指导,同时使用服务器日志作为实际用户活动的大数据源。

MABL

Mabl 是由一群前 Google 雇员研发的 AI 测试平台,其侧重点是对应用或网站进行功能测试。在Mabl平台上,我们通过与应用程序进行交互来 “训练”测试并进行录制,录制完成后,经训练而生成的测试将在预定时间自动执行。

Test.AI

Test.AI 被视为一种将AI大脑添加到 Selenium 和 Appium 的工具,它以一种类似于 Cucumber 的 BDD 语法的简单格式定义测试。在应用程序中,Test.AI 能够动态识别屏幕和元素,并自动驱动应用程序执行测试用例。

除此之外,Functionize 、Katalon Studio和 Tricentis Tosca等工具也具有智能特性。

为什么在软件测试中我们需要人工智能

将近80%的测试活动是对软件已经进行过的测试的重复。这会消耗了大量的人力和时间。

这种现象在软件测试中十分常见,随着项目的扩展,参数也会增加,从而会导致给测试团队带来额外的工作量,这可能已经超出他们的能力和工作时间的范围之外了。

同时手动测试还会面临可伸缩性的问题,这会需要对多台机器进行管理。这种方法复杂又繁琐。

但是,人工智能却可代替以上方法,可通过以下方式来解决这些问题:

• 使用人工智能机器,80%的重复性任务可以由人工智能机器人完成,剩下的20%工作可以由人类利用他们的创造力和推理能力去完成。因此,人工智能可以做重复性的任务,如测试数据的数量、回归测试等,而测试人员可以专注于处理类似于系统集成的创造性的和困难的任务。

• 使用人工智能机器人,测试人员可以重构测试以合并新的参数,这会使得测试的覆盖率增加却不会给测试团队带来额外的工作量。

• 人工智能可以自动创建测试用例。这降低了使用内置标准的工作级别(LOE)。

• AI通过理解用户接受标准自动生成测试代码或伪代码。测试自动化可以节省大量的时间和成本。

• 人工智能还可以进行无代码测试自动化,它可以在你的web或移动应用程序上自动创建和运行测试,而无需编写任何代码。

• 由于人工智能机器人可以全天候工作,它们可以在任何需要的时候帮助调试项目,因此测试无需人工干预也可以运行更长的时间。

最后,基于AI的测试也会让测试人员感到困惑。测试人员可能会怀疑AI测试的有效性,要消除这种不信任,测试人员需要掌握不同于传统测试人员所需的技能,他们需要更多聚焦在数据科学技能上,还需要了解一些机器学习的原理。

说到这里,也许有人会问,测试人员的工作会被AI抢走吗?

未来,人工智能会取代软件测试工程师吗?我总觉得答案是,也不是。说是,因为AI bot比较适合那些重复性较强的测试任务,如果测试人员的工作内容重复性较高,无创造性,那么迟早会被AI取代。然而对于那些需要一些创造性和比较困难的测试任务,AI目前还无能为力。

"AI is the new electricity",这是Stanford教授Andrew.Ng对于AI的一个很好的观点,对于软件测试来说,AI是一个工具,一个聪明的助手。而对于测试人员来说,需要拥抱变化,提升能力,这样才能更好地利用AI带来的能量!

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

posted @ 2018-09-26 17:42 51testing 阅读(199) | 评论 (0) | 编辑 收藏
 
仅列出标题
共55页: First 16 17 18 19 20 21 22 23 24 Last