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

未来已来,软件行业势不可挡,一篇文章教你入门软件测试……

前几天和同学小聚,有个同学抱怨道:“我们公司马上要改制了,之前是国企以后就不是了,待遇也大不如前哎。本来毕业的时候想着是做文职类工作轻松些而且国企也比较稳定,现在看来真得另谋出路了。“我想转行做软件测试咋样啊?你给我提点建议啊?”我相信我这位同学的经历并非个例,有很多朋友都因为各种各样的原因想转行进入软件测试行业,那我今天就单独写一篇文章,聊聊小白如何入门软件测试吧。


作为一个拥有四年多软件测试经验,参与过大大小小十来个项目,涉猎范围包括嵌入式项目、大数据项目、APP项目、人工智能项目,做过功能测试、性能测试和自动化测试,也参与过测试人员的招聘的测试工程师,我认为入门软件测试需要四个方面的知识or技能,它们是:业务知识、职业素养、基础知识、技术知识。


这四者之间的关系见上图,职业素养是一切的根基,因为人在职场就必须拥有必要的职业素养,软件测试工程师也不例外。基础知识和技术知识是两大支柱,它们共同为业务知识服务。毕竟对于一个公司来说,盈利是主要目的,所以业务是根本目标。我记得有一年腾讯的面试官就说过一句话:“你的个人技能如果能给公司业务带来价值,那么你的个人价值就越高”

一、职业素养

首先是认真的工作态度。因为软件测试本来就是个细致活儿,不认真仔细地全心投入是很难发现潜在BUG的,一旦这些BUG流到最终用户手上,给公司带来的损失就是不可计数的。

其次是善于沟通和团队协作。现在的软件开发模式都是team work形式。比方说发现一个疑似BUG,你如果和程序员小哥说:“我又发现了个BUG,你快来看看”对方八成会说:“你自己环境配置有问题吧,我本地是可以运行的”然后就没有然后了,但是如果你和程序员小哥说:“老铁,有空吗?不知道是不是我的测试环境配置有问题,导致你开发的某某模块运行不了”程序员小哥八成会说:“操!不会又出BUG了吧”然后立马帮你排查问题。平时和团队成员沟通的时候,学会同理心,多站在别人角度思考问题,有个好人缘的话开展工作起来也相对容易些。

最后是较强的学习能力。因为IT业是一个技术更新迭代非常频繁的行业,可能今年流行的框架到了明年就过时了,所以需要从业者具备较强的学习能力。

二、基础知识

基础知识是入门IT行业的通用基础,类似大学里学过的公共课一样。只要是IT行业从业者,就必须要掌握。其中包括:

1.软件工程的相关知识。比如软件的定义、软件的生命周期、软件开发的模型、软件开发流程、计算机组成原理、操作系统分类等等。

2.软件测试的基本知识。比如软件测试的概念、软件测试的目的、软件测试的原则、产品质量模型、软件测试的分类、软件测试的基本流程、测试方案由哪几部分组成、BUG的闭环流程是怎样的、测试用例怎么写、怎么高效提BUG、软件测试处于软件开发周期中的哪个环节、相关利益方都有谁、测试报告的格式是什么等等。

3.英语。由于现在很多公司都会涉猎海外业务,而且很多开源技术文档都是英文的,所以学习英语其实对软件测试工程师来说也是非常重要的。所以平时多积累一些单词量、多听VOA音频、多看英文原文文档对英语学习是非常有帮助的。

三、技术知识

1.数据库基础。因为数据库是最常见的数据存储工具,所以掌握它非常有必要。比如数据库的概率、分类、实体联系模型、三大范式、数据的备份、存储过程、SQL语句怎么写(增删改查)等等。

2.LINUX基础知识。现在很多大型服务器都装linux操作系统,所以我们要熟悉Linux的文件结构、基本命令、shell脚本相关知识。这里建议大家可以自己在电脑上装个linux虚拟机,再装mysql。这样一来,就可以在上面联系Linux指令和sql语句了。

3.编程语言基础知识。可以学一门高级语言,比如java、python等。虽然测试工程师在编程上的要求可能略低于开发工程师,但是了解编程语言能让你成为一个level更高的测试。比如在code review的时候,你就可以站在测试的角度上对代码结构提出自己的建议;又比如高段位的测试开发工程师、自动化测试工程师等都需要编程能力,所以打好语言基础很重要。

四、业务知识

一切技术都是为业务服务的,所以当你进入一家公司一个项目组的时候,首先需要了解这家公司是做什么的,这个项目组在这家公司里处于什么地位。比如你去了一家银行,你所在的项目组负责银行自助APP开发,那么你就需要学习银行开户、存款、转账、销户等一系列业务需要遵循的流程,一般产品原型图里都有流程图,好好学习这些流程图对设计测试用例很有帮助。又不如你去了一家智能交通领域的公司,你所在的项目组负责开发城市道路交通违法行为自动抓拍的工具。那么你就需要了解一下道路交通法规,有哪些违法行为,如何界定这些违法行为,车牌号码的编制规则等等。一般来说,测试人员都可以从产品经理/项目经理/需求工程师处获取包含这些业务知识的文档,自学即可,有不懂的再请教其他同事。

总结:

写到这里,小白入门软件测试所需要的知识基本就介绍完毕了。可能有些朋友们要问,如何获取这些知识呢?你可以买书、买视频资料利用业余时间自学;你也可以关注一些测试方面的公众号,利用零散时间学习;条件容许的话你还可以报名一些培训课程,在老师的指导下系统地学习软件测试知识。总之,网络时代获取学习资料不是问题,最最关键的是执行力!JUST DO IT!笔者见过太多买了一大堆学习资料,百度云盘里都存满了,但是从来没点开看的人了。所以,只有坚持学习才能成功转型,毕竟机会总是留给有准备的人!

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

posted @ 2019-06-13 17:54 51testing 阅读(101) | 评论 (0) | 编辑 收藏
 
菜鸟学Python自动化超厉害技能get!90分钟教你自动生成测试数据……

在自动化测试工作如火如荼开展的过程中,大家是否注意到这样一个细节,自动化虽然帮助我们提高了回归测试的效率,大大节约了人工测试的成本。而如何通过自动化测试能够提高测试的覆盖率或者更有效的发现bug这个重要的问题,该如何提升改进呢?

众所周知,测试的覆盖率取决于测试用例的设计,而测试用例本身又要依赖设计各种不同的测试数据。也就是说只要提高了测试数据的数量和质量,测试的覆盖率就可以得到很大程度的提升。

但是自动化测试工程师主要的注意力都放在如何让脚本能够运行这样的技术问题上了,很少有时间去思考应该构造什么样的测试数据来更好的支持我们的自动化测试。即使有这样的想法,但是碍于测试时间和资源非常有限,没有那么多的时间去手工构造测试数据,所以自动化测试带来的价值也只是满足正常、少量数据的测试,与人工测试相比其覆盖率还有很大的不足。

那么如何使用python脚本技术能自动生成有效多样的测试数据,不仅如此,如果能进一步生成可供自动化测试脚本直接读取的测试用例。那就能实现从数据构造、测试用例设计、测试执行一系列全方位的“自动化”测试工作了。

说了这么多,周四19:30,我将带大家一起解决这些问题,想听可以看图片参与,暗号”613”:

1、“全流程自动化”测试工作思想的建立

什么是“全流程自动化”?其价值和意义何在?

如何进行“全流程自动化”测试工作的开展?

2、如何用自动化的思想设计不同类型,不同需求的测试数据

3、常见的测试数据类型有哪些?如何以自动化的方法进行创建?

技术试验:通过python的哪些技术来进行测试数据的构造

V1.0版本:按照数据类型和不同的数据需求,创建不同的构造测试数据的方法

V2.0版本:如何生成测试数据文件进行复用

4、以面向对象思想来进行测试数据库的积累

面向对象编程思想的建立

V1.0版本:如何依据数据需求自动封装生成测试数据

V2.0版本:如何不断积累各种测试数据库

posted @ 2019-06-12 17:14 51testing 阅读(164) | 评论 (0) | 编辑 收藏
 
小白如何入门大数据,资深技术大牛带你回顾学习路线!

什么是大数据?

其实大数据并不是一种概念,而是一种方法论。简单来说,就是通过分析和挖掘全量的非抽样的数据辅助决策。大数据可以实现的应用可以概括为两个方向,一个是精准化定制,第二个是预测。比如像通过搜索引擎搜索同样的内容,每个人的结果却是大不相同的。再比如精准营销、百度的推广、淘宝的喜欢推荐,或者你到了一个地方,自动给你推荐周边的消费设施等等。

目前市场对大数据相关人才的需求与日俱增,岗位的增多,也导致了大数据相关人才出现了供不应求的状况,从而引发了一波大数据学习的浪潮。

大数据解决什么问题?

大数据解决对海量数据的存储、查询、分析计算等操作,主要应用在利用庞大的数据归类分析用户的偏好,利用用户的历史信息得出相应的统计账单等,将同行业的大公司的数据进行计算分析,可以挖掘出一些隐含价值。

学习大数据的基础

1)java SE,EE(SSM)

因为90%的大数据框架都是java写的

2)SQL

特别是sql语句中的查询语句,因为对数据库的操作最多的是查询

使用Hadoop作为大数据的分布式存储、计算和分析 sql的操作会重要

3)Linux

大数据的框架安装在Linux操作系统上

总的来说,大数据处理技术怎么学习呢?在做大数据开发之前,因为Hadoop是高层次的语言开发,需要懂得Java或者Python,很快的就能上手。所有的大数据生态架构都是基于linux系统的基础上的,所以你要有Linux系统的基本知识。如果你不懂Java或者Python还有Linux系统,那么这都是你必学的知识(Java或者Python可二选其一)。

大数据技术的学习顺序?

大数据处理技术怎么学习呢?首先我们要学习Java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。

Java:大家都知道Java的方向有JavaSE、JavaEE、JavaME,学习大数据要学习那个方向呢?

只需要学习Java的标准版JavaSE就可以了,像Servlet、JSP、Tomcat、Struct、Spring、Hibernate,Mybites都是JavaEE方向的技术在大数据技术里用到的并不多,只需要了解就可以了,当然Java怎么连接数据库还是要知道的,像JDBC一定要掌握一下,有同学说Hibernate或Mybites也能连接数据库啊,为什么不学习一下,我这里不是说学这些不好,而是说学这些可能会用你很多时间,到最后工作中也不常用,我还没看到谁做大数据处理用到这两个东西的,当然你的精力很充足的话,可以学学Hibernate或Mybites的原理,不要只学API,这样可以增加你对Java操作数据库的理解,因为这两个技术的核心就是Java的反射加上JDBC的各种使用。

Linux:因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。

好说完基础了,再说说还需要学习哪些大数据技术,可以按我写的顺序学下去。

Hadoop:几乎已经成为大数据的代名词,所以这个是必学的。 Hadoop里面包括几个重要组件HDFS、MapReduce和YARN。

Hadoop的核心就是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用,通俗说MapReduce是一套从海量源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据。

记住学到这里可以作为你学大数据的一个节点。

Zookeeper:这是个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。

Mysql:大数据的处理学完了,那么接下来要学习小数据的处理工具Mysql数据库,因为装hive的时候要用到,Mysql需要掌握到什么层度呢?你能在Linux上把它安装好,运行起来,会配置简单的权限,修改root的密码,创建数据库就可以了。这里主要的是学习SQL的语法,因为hive的语法和这个非常相似。

Sqoop:这个是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。

Hive:这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapReduce程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。

Oozie:既然学会Hive了,我相信你一定需要这个东西,它可以帮你管理你的Hive或者MapReduce、Spark脚本,还能检查你的程序是否执行正确,出错了给你发报警并能帮你重试程序,最重要的是还能帮你配置任务的依赖关系。我相信你一定会喜欢上它的,不然你看着那一大堆脚本,和密密麻麻的crond是不是有种“即将崩溃”的感觉。

Hbase:这是Hadoop生态体系中的NOSQL数据库,他的数据是按照key和value的形式存储的并且key是唯一的,所以它能用来做数据的排重,它与MYSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。

Kafka:这是个比较好用的队列工具,队列是干什么的?排队买票你知道不?数据多了同样也需要排队处理,我们可以利用这个工具来做线上实时数据的入库或入HDFS,这时你可以与一个叫Flume的工具配合使用,它是专门用来提供对数据进行简单处理,并写到各种数据接受方的。

Spark:它是用来弥补基于MapReduce处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作它,因为它们都是用JVM的。

总结:

当然除了上述的这些必备技能,后续还有很多地方是需要提高的,比如学习下Python,可以用它来编写网络爬虫,就可以自己造数据了。

最快的学习方法,就是师从行业专家,学习老师多年积累的经验,自己少走弯路达到事半功倍的效果。自古以来,名师出高徒。

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

posted @ 2019-06-11 18:10 51testing 阅读(79) | 评论 (0) | 编辑 收藏
 
解放双手——移动端UI自动化测试框架对比,总有一款适合你!

随着Android和IOS两大平台的持续发力,现在市面上的移动端操作系统已被Android和IOS占领,其中Android的份额更是在80%以上。那么面对市面上林林总总的自动化测试框架和工具,对于移动端的自动化测试该如何选择呢?


一、主流框架对比

下面对比了市面上主流的几大框架:


二、各大框架优缺点说明

1、Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。

2、MonkeyRunner也是Android SDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本用Python来写,对测试人员来说要求较高,有比较大的学习成本。

3、Instrumentation是早期Google提供的Android自动化测试工具类,虽然在那时候JUnit也可以对Android进行测试,但是Instrumentation允许你对应用程序做更为复杂的测试,甚至是框架层面的。通过Instrumentation你可以模拟按键按下、抬起、屏幕点击、滚动等事件。Instrumentation是通过将主程序和测试程序运行在同一个进程来实现这些功能,你可以把Instrumentation看成一个类似Activity或者Service并且不带界面的组件,在程序运行期间监控你的主程序。缺点是对测试人员来说编写代码能力要求较高,需要对Android相关知识有一定了解,还需要配置AndroidManifest.xml文件,不能跨多个App。

4、UiAutomator也是Android提供的自动化测试框架,基本上支持所有的Android事件操作,对比Instrumentation它不需要测试人员了解代码实现细节(可以用UiAutomatorviewer抓去App页面上的控件属性而不看源码)。基于Java,测试代码结构简单、编写容易、学习成本,一次编译,所有设备或模拟器都能运行测试,能跨App(比如:很多App有选择相册、打开相机拍照,这就是跨App测试)。缺点是只支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。

5、Espresso是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,编写测试代码简单,容易快速上手。因为是基于Instrumentation的,所以不能跨App。

6、Selendroid:也是基于Instrumentation的测试框架,可以测试Native App、Hybird App、Web App,但是网上资料较少,社区活跃度也不大。

7、Robotium也是基于Instrumentation的测试框架,目前国内外用的比较多,资料比较多,社区也比较活跃。缺点是对测试人员来说要有一定的Java基础,了解Android基本组件,不能跨App。

8、Athrun是淘宝出的一个移动测试框架/平台,同时支持iOS和Android。Android部分也是基于Instrumentation,在Android原有的ActivityInstrumentationTestCase2类基础上进行了扩展,提供一整套面向对象的API。

9、Appium是最近比较热门的框架,社区也很活跃。这个框架应该是是功能最强大的:

a.它的优点:

开源;

支持Native App、Hybird App、Web App;

支持Android、iOS、Firefox OS;

Server也是跨平台的,你可以使用Mac OS X、Windows或者Linux;

b.它的哲理是:

用Appium自动化测试不需要重新编译App;

支持很多语言来编写测试脚本,Java、Javascript、PHP、Python、C#、Ruby等主流语言;

不需要为了自动化测试来重造轮子,因为扩展了WebDriver。(WebDriver是测试WebApps的一种简单、快速的自动化测试框架,所以有Web自动化测试经验的测试人员可以直接上手);

移动端自动化测试应该是开源的;

c.它的设计理念:

Client/Server架构,运行的时候Server端会监听Client端发过来的命令,翻译这些命令发送给移动设备或模拟器,然后移动设备或模拟器做出响应的反应。正是因为这种架构,所以Client可以使用Appium client libraries多种语言的测试脚本,而且Server端完全可以部署在服务器上,甚至云服务器。

Session,每个Client连接到Server以后都会有一个Session ID,而且Client发送命令到Server端都需要这个Session ID,因为这个seesion id代表了你所打开的浏览器或者是移动设备的模拟器。所以你甚至可以打开N个Session,同时测试不同的设备或模拟器。

Desired Capabilities,其实就是一个键值对,设置一些测试的相关信息来告诉Server端,我们需要测试iOS、还是Android,或者换是WebApp等信息。

Appium Server是Node.js写的,所以可以直接用NPM来进行安装。

Appium Clients,Mac OS和Win下提供GUI,不需要装Node.js,方便测试人员操作。

d.相关限制:

如果你在Windows使用Appium,你没法使用预编译专用于OS X的.app文件,因为Appium依赖OS X专用的库来支持iOS测试,所以在Windows平台你不能测试iOS Apps。这意味着你只能通过在Mac上来运行iOS测试。

三、总结

从方面的对比和优缺点分析不难看出。对于需要支持跨平台和需要支持WebView的应用,Appium的优势就比较明显了,因为Appium拥有了以上几大框架的所有优点:跨App,支持Native App、Hybird App、Web App,还支持N种语言来编写你的测试脚本。如果是只针对Android平台的应用,我还是比较推荐UiAutomator,特别是后面推出的UiAutomator2.0,此外,这两年,Google又推出了Espresso,它也应该是一个很优秀的框架,但是个人认为适合编程基础一般或刚入门同学(反正我是有点用不太习惯)。

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

posted @ 2019-06-05 17:35 51testing 阅读(123) | 评论 (0) | 编辑 收藏
 
支招:原来这些才是APP崩溃的主要原因!资深技术大牛测试经验总结

关于这篇崩溃类问题已经有意向总结很久了,无疑这篇文章比较难写。原因之一是需要有大量的App测试实践经验,实践是检验整理的唯一标准么;再有准备过程也比较长,需要平时多记录多思考多归纳,如果您恰巧读到这篇文章,觉得对您有帮助,请点个小心心吧。

注:本篇文章未考虑功能正常流程下的操作。


一 、什么样的场景下容易出现崩溃类问题

最近脑子里一直在想什么样的问题容易导致崩溃——那就是具有异常思维,举个例子:正好前两天看了一部美剧叫《菜鸟老警》,里面有个场景是主人公John Nolan因为没有用警车拦住逃犯的车而导致逃犯出逃,这个场景与测试有什么关联呢?首先正常人在马路上行驶都会躲避避免与别人发生碰撞,这就好比测试功能的主流程,不会去乱点乱输入;但是警察就不一样了,他会为了抓住逃犯不顾一切,想尽一切办法,这就好比测试过程中的异常思维,要思考怎么样操作使功能不好用。

宝典一、异常操作

各种异常操作都有可能导致程序崩溃,虽然客户基本上都是按流程使用 APP,但对于测试者来说,发现潜在的崩溃问题,保证产品质量是对我们工作的最好总结。包括下面总结的具体功能崩溃问题大多数都是异常操作引起的,比如图片上传过程中添加大容量图片、长图、残缺图片等等。

宝典二、某一功能前后台来回切换,很容易导致崩溃

比如视频类视频播放过程中切换到后台再切换回来

宝典三、边界值类崩溃

所谓边界值类问题就是测试功能所能承受的最大值,举个例子,比如图片最大支持5M,你上传》=5M的图片,文本框最大支持300字,你就输入大于等于300字的内容。

宝典四、多次点击某一个特定功能

这个比较常见,多次点击页面返回按钮,多次进行搜索,多次来回点击切换按钮,多

次点击分享按钮等都会导致程序崩溃。

宝典五、弱网条件下功能操作

宝典六、页面未加载完全情况下快速操作


二、具体功能的崩溃问题

2.1、视频类/语音类

1) 视频全屏播放中,多次点击全屏按钮和左上角返回按钮,系统崩溃

2) 视频全屏播放中,同时点击全屏和返回上页按钮后系统崩溃

3) 视频播放横竖屏切换,系统崩溃

4) 视频播放过程中,反复调整倍速崩溃

5) 视频播放过程中切换到后台再切回前台,播放不成功

6) 视频播放中多次切换章节 APP 闪退

7) 视频播放过程中被其他软件暂停后重新切换到播放页面点击继续 无法续播

8) 下载中的视频点击删除后崩溃

2.2、相机/扫一扫/头像

1) 扫一扫界面进入相册中选择 10M 以上图片出现闪退

2) 无相册权限修改头像可访问相册

3) 头像上传长图片崩溃

4) 头像上传残缺图片崩溃

5) 点击拍照按钮后切换到后台,再切换到前台,点击选择图片出现闪退

2.3、文本框/搜索

输入框中粘贴内容并全选复制程序闪退

2) 搜索界面输入文字全选添加闪退

3) 搜索成功后,再次搜索 APP crash

4) 多次输入特殊字符进行搜索,app 闪退

5) 搜索结果界面点击取消程序闪退

2.4、页面操作

1) 进入页面后马上退出再点击其他栏目

2) 连续返回到上一级页面

3) 进入界面一直加载,kill app 后点击 app ,页面打开后出现闪退

4) 界面内容较多时,上滑刷新后下滑,界面卡主,点击任意记录,出现闪退

2.5、分享功能

1) 分享微信成功返回应用,再次点击分享按钮应用闪退

2) 多次操作留言分享按钮

3) 分享内容成功后,如在 qq 打开链接提示故事不存在

4) 微博授权登录,反复几次崩溃

最后,这些场景及操作需要临时变通才会有更好的效果,弱网情况下多次点击某一功

能,个人认为比较好用的是多次点击某一功能,程序经常前后台切换等。

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

posted @ 2019-06-04 18:10 51testing 阅读(98) | 评论 (0) | 编辑 收藏
 
价值连城的软件测试考证指南,哪些证书值得考?

一、概览

  目前各行各业都流行考证,作为软件测试工程师的你,是否考虑过有哪些证书是适合测试人员认证的呢?本文将软件测试的证书分为5类,分别为国家类(指国家官方认可的考试和证书),国际类(在国际上认可度比较高的认证),培训类(各类培训机构的毕业证书),项目管理类(PMP),专业类(测试技术服务的行业相关的认证)。

  证书无法完全体现能力,本文也不是规劝进行相关认证考试的,旨在给大家介绍与测试相关的认证和机构,同时说明需要理性看待证书。


二、国家类(软考,计算机等级)

  本节介绍的是被国家认可的软件测试相关的证书。整个软件行业发展非常迅速,在国家层面需要对各行各业进行能力的认定和考核。软件测试作为软件的一个组成部分,也在国家相关部门的考核范围,这里重点说明两个:软考和计算机等级考试。

  从考纲的变更频繁,方向的不断变化中可以看出,国家相关部门是非常想把软件,以及软件测试的认证做的非常到位的。但从实际的考题设置来看,与实际的科技生产现状脱钩比较严重,做不到指导实际用人招聘的目标,所以也不会被企业非常认可。

 2.1、全国计算机等级考试

  全国计算机等级考试(National Computer Rank Examination,简称NCRE),是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。

  这项考试在校学生考的比较多,对于应届生有帮助,对于有工作经验的含金量不高。其中关于软件测试的证书是四级软件测试工程师和三级软件测试技术。在2008年4月引入考试,但在2018年3月中去掉。所以针对软件测试的证书,在计算机等级考试中已经没有了。


 2.2、计算机技术与软件专业技术资格(水平)考试

  计算机技术与软件专业技术资格(水平)考试,就是俗称的“软考”,是原中国计算机软件专业技术资格和水平考试的完善与发展。计算机软件资格考试是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试,其目的是科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。

  软考设置了纵轴3个级别层次(初、中、高),横轴5个专业领域(计算机软件,计算机网络,计算机应用技术,信息系统,信息服务),共计27个专业资格。其中与软件测试证书是中级软件评测师,属于计算机软件领域。


 2.3、二者区别

计算机等级考试和软考有如下区别:

  (1)组织部门不同。计算机等级考试是教育部批准,由教育部考试中心主办的。软考是由人力资源和社会保障部、工业和信息化部领导下的国家级考试。

  (2)目的不同。计算机等级考试的目的是,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。软考是科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。

  (3)时间不同。计算机等级是3、9、12月。软考为上半年5月底和下半年11月中。

  其实只要区别是前两个了。教育部主办的等级考试是评价毕业院校学生需要具有一定的等级,比如一些大学的计算机学院将过三级或者四级作为毕业的条件。人社部和工信部是评价工作人员职业资格的。

  二者相比,对于有工作经验的人来说,软考的价值更高些。软考还有一个好处是可以作为职称资格证书(是资格,不是职称),同时在职称评审中代替职称计算机考试。

三、国际类(ISTQB,CSTE)

  在国际上,也有软件测试相关的认证,相比较国家的认证来看,含金量和认可度相对会高一些。本节介绍两个比较知名的:ISTQB和CSTE。

3.1、ISTQB

  ISTQB(International Software Testing Qualifications Board),全称为国际软件测试认证委员会,是一个注册于比利时的非赢利性组织,是国际唯一权威的软件测试资质认证机构。ISTQB目前拥有58个分会,覆盖包括美国、德国、英国、法国、印度等在内的120多个国家和地区。

  2006年,ISTQB在大中华区(包括港澳台地区)成立了唯一分会,CSTQB(Chinese Software Testing Qualifications Board)。全权代表ISTQB在授权区域内推广ISTQB软件测试工程师认证体系,认证、管理培训机构和考试机构,接受ISTQB的全面的业务指导和授权。

  ISTQB认证分为三个等级基础级Foundation Level (CTFL),高级Advanced Level (CTAL)和专家级Expert Level (CTEL),三个方向敏捷(AGILE),核心(CORE)和专家(SPECLIALIST)。其中基础级包括敏捷测试、基于模型测试以及面对各个专业的测试。高级包括测试经理、测试分析、测试技术分析。专家级包括测试过程改进、测试管理。


  从其框架可以看出,贯穿了测试体系的全部,参照这样的体系可以构建测试的职业生涯发展方向。ISTQB含金量很高,在金融、军工、汽车等安全要求较高的行业、BAT以及外企大公司等普遍有硬性要求,近两年在国内的认可度和需求量明显上升。


 3.2、CSTE

  CSTE全称Certified Software Tester,是QAI(Quality Assurance Institute)旗下的重要认证。该全球范围的测试认证已经在美国、印度等颇为普及,成为很多公司对于测试从业人员的要求之一。但是在中国,考这个证书的人只占了少部分。

  QAI全称是质量保证协会,是一个代表质量保证人员的专业协会。在1980年把协会和认证工作分开,就成立类ISCB(International Software Certifications Board’s),国际软件认证委员会。目前取得认证的人士分布在六大洲43个国家,大约有52000人获得。

  ISCB的认证涵盖三个领域:软件质量保证,软件测试和软件业务分析。CSTE是属于软件测试认证的一项。ISCB的认证体系如下。


  CSTE的知名度没有ISTQB高,在国内的普及程度也没有ISTQB好。含金量和认可度也是仁者见仁。

 四、培训类

  国内有非常多的测试培训机构,这里指的是培训机构的毕业证书。当然,几乎所有的培训机构都会组织进行ISTQB或者CSTE的考试,也有专门针对软考或计算机等级的培训机构,本节的讨论就是机构的毕业证书。

  由于培训机构非常多,质量和效果和各人的关系非常大,国内对机构的毕业证书都是作为一个加分项,作为混迹于51Testing论坛的老会员,这里对51Testing做简要说明。

 4.1、51Testing

  51Testing是博为峰下属的专注于软件测试的培训品牌,于2004年成立,公司总部位于上海,并在北京、深圳等15地均设有分支服务机构。

  51Testing属于成立比较早的测试培训机构,业务范围包含就业培训、企业内训、周末精品班、测试开发精英班、软件测试认证等服务,被誉为"软件测试人才的摇篮"。

  实际上,51Testing除了培训之外,还有门户站,论坛,测试圈等线上测试组织,同时也有各地的测试沙龙。是非常全面的测试平台。

五、项目管理类

  测试人员随着工作的深入,会更多的加入到质量控制的工作中,就会慢慢发现项目管理实际也是软件测试人员可以发挥所长的一个方向。项目管理类的认证很多,其中比较著名的是PMP。

 5.1、PMP

  PMP指的是项目管理专业人士资格认证。它是由美国项目管理协会(Project Management Institute(PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试。PMI是世界领先的非盈利会员协会的项目管理专业机构,在全球185个国家有70多万会员和证书持有人。

 PMP其实是PMI发起的一项认证,PMI提供8种认证:

  1. 助理项目管理专业人士(Certified Associate in Project Management, CAPM)认证面向广泛的项目管理从业人士群体。

  2. 项目管理专业人士(Project Management Professional, PMP)认证始于1984年的这项认证向雇主、客户和同事表明项目经理具备成功完成项目的项目管理知识,经验和技能。在理想状态下,每个项目都应有一位PMP持证人士作为核心来领导团队、指导项目任务,并在预算、时间和范围三重约束下管理项目。 这就是俗称的PMP了。

  3. 项目集管理专业人士(Program Management Professional, PgMP) 认证面向具备知识、经验和权威来制定和执行战略性决策的专业人士。

  4. 项目组合管理专业人士(Portfolio Management Professional, PfMP)认证面向具有先进经验和技巧的项目组合管理者。

  5. PMI敏捷管理专业人士(PMI Agile Certified Practitioner, PMI-ACP)认证是唯一要求培训、经验与考试三者相结合的敏捷认证。

  6. PMI商业分析专业人士(PMI Professional in Business Analysis, PMI-PBA)认证,在项目和项目集上采用业务分析能够让组织得以实现他们所需要的改变以及达成战略目标。

  7. PMI风险管理专业人士(PMI Risk Management Professional, PMI-RMP)认证面向在评估和识别项目风险的专业领域具备知识和技能,并能够制定计划来缓解威胁和/或利用机会的专业人士。

  8. PMI进度管理专业人士(PMI Scheduling Professional, PMI-SP)认证面向在制定和维护项目进度的专业领域拥有专长的专业人士。

  PMP实际的含金量很高,而PgmP和PfmP是难度更高的认证。对于管理岗位来说,进行PMP的学习和认证还是非常有必要的。近年来,随着考取PMP的人越来越多,让大家有些看轻了这项认证。实际上,中国人善于考试是不争的事实,而PMP是重在实战的一项能力,如果只是为了考取证书,而无法在项目管理中落地,是个人或者是平台的问题,于PMP本身是无关的。


六、专业类

  如果说前面都是从单纯的软件测试技术来定位认证的化,本节就是说明测试技术服务行业的相关认证。业务知识是测试人员无论如何也绕不开的话题,各个行业也有自己特定的认证,如果可以通过本行业的权威认证,无疑对自己的价值是可以添砖加瓦的。由于行业千差万别,这里说明的只是一部分。

  (1)软件开发。软件开发没有专门的证书,如果要认证,就只有国家类的软考了。但针对特定语言,比如Java,Sun就推出了sun certificated java programmer (SCJP),Sun Certified Java Developer(SCJD)等认证。由于开发技术多种多样,无法设定统一的认证,同时通过证书证明软件开发的能力并不被认可,项目才是硬道理。

  (2)数据库。对于经常于数据库打交道的测试人员,如果有一个数据库相关的认证,会提高自身价值,同时工作中也会更有章法。数据的认证只要是每个数据库厂家设定的,由于传统的数据库就那么几家,所以含金量和认可度都是很高的。包括如下:

  ORACLE数据库认证:OCA(Oracle Certified Associate)、OCP(Oracle Certified Professionals、OCM(Oracle Certified Master)。

  MySQL数据库认证:Certified MySQL 5.0 Developer (CMDEV)、Certified MySQL 5.0 DBA (CMDBA)、Certified MySQL 5.1 Cluster DBA (CMCDBA)。

  MS SQL认证:微软MCSE 包括Data Platform数据平台和MCSE: Business Intelligence商业智能两个方向。

  (3)网络。网络、通信相关专业的认证,知名的是CCNA,CCNP与CCIE。

  CCNA:Cisco Certified Network Associate,是初级认证,标志着具备安装、配置、运行中型路由和交换网络,并进行故障排除的能力。

  CCNP:Cisco Certified Network Professional,是中级认证,表示通过认证的人员具有丰富的网络知识。

  CCIE:Cisco Certified Internetwork Expert,是高级认证,是美国Cisco公司于1993年开始推出的专家级认证考试。被全球公认为IT业最权威的认证,是全球Internetworking领域中最顶级的认证证书。

  这些都是思科的认证,其实民族品牌华为也有相应的配套认证:HCNA、HCNP、HCIE。

  (4)操作系统。目前国际上广泛承认的Linux认证有Linux Professional Institute(简称为LPI)、Sair Linux和GNU、Linux+和Red Hat Certified Engineer。Windows服务器也有微软的相关认证。

七、证书总结

  上述认证之间也不是完全孤立的,比如各大培训机构在ISTQB、软考等都有方向性培训,同时软考、计算机等级考试也都有数据库、编程语言的认证。

  实际工作中,除了专业类的个别证书(如数据库和Linux)外,企业在招聘时对证书的看重不是非常大,只能作为加分项,无法决定最终的面试结果。

  但并不代表证书存在没有必要,或者对证书无感。一方面,在同等条件下,证书还是能说明一定的问题,比如最少能说明此人是积极的,对自己负责的。另一方面,证书的结果自然非常重要,但其过程更为重要。通过系统的学习,能对测试领域知识的方方面面有系统的了解,能够构建自己的知识体系。同时,随着学习的系统化,对自身的长处、缺点,未来的职业发展都有很好的指导。

  埋头干活,更要抬头看路,而证书的存在,可以作为我们的指路石。

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

posted @ 2019-06-03 18:32 51testing 阅读(109) | 评论 (0) | 编辑 收藏
 
找工作太难?软件测试职场套路太深?来来这些生存套路了解一下!

职场最长的路就是所谓的套路了。尽管互联网公司相对来说氛围要好得多,但所谓“有人的地方就有套路,是套路就会有人背锅”。这对于大多数的普通测试人员来说,要与不同角色人员打交道,并且躲过各种各样的套路,恐怕就是必修课了。下面就自己一些经验和感悟,聊聊自己的一些体会。


对“ 另类” 成员不可一视同仁

对于大部分测试人员而言,要想让一个项目顺利上线,需要和不同的角色人员深入打交道,而且是从头到尾。这其中除了固定的流程外,感受比较深的一点就是:不同的研发人员、产品人员有不同的合作习惯,各自的强项和弱项,甚至一些行为比较“另类”的人员,需要有针对性考虑与他们的合作模式了。

举一个自己亲身经历的一个例子:众所周知,互联网公司加班属于家常便饭了,六点下班大多属于偶尔一次的奢侈行为了。当然自己所在团队也不例外,加上当时在赶一个很紧急的项目,团队成员几乎都10 点往后才陆陆续续开始离开。但其中有个同学却一直保持 6、7 点下班的“惯例”。没办法了,既然无法控制别人的行为,只能根据他的惯例做不同的区别对待了,于是乎将与其所有的 bug 修复、验证等流程做了对应修整。

防止替“ 小人”背锅

不主动招惹,但如果涉及利益相关的事情,无论对谁,请谨记以下几点:

(1)各自职责划分清楚。万一到时候真发生矛盾,能够确认到底是谁的工作出现了问题

(2)事情的关键节点各方确认。会议纪要、讨论纪要,一定由邮件、聊天记录等形式由各方确认。如会议结束后的会议内容确认,下期工作安排,项目责任分工等

(3)一切证据说话。为了不做无谓的扯皮,背黑锅,一定留有邮件、聊天记录、录音等证据来自证清白

PS:休假时,提前设置好自动回复/ 备注找谁:让对方知道你现在不能即时回复邮件,同时告知相应的对接人。

举一个身边A同学经历的一个事情:某次产品到即将上线已经凌晨2 点了,由于项目上线前,流程要求必须由产品人员发出邮件后,才能操作上线。但当时产品人员已经回家了,A 同学只能打电话,发现电话打不通,只好给其 leader 打电话,然后“费了半天口舌”来发邮件,最后产品上线验证完成,基本凌晨 3,4 点了。第二天,不知产品人员内部是如何沟通的,就在群里做各种扯皮、推脱,大致就是上线当天没有提前周知自己等等之类的,还把锅甩给了测试人员为什么不提前发周知,态度强硬。幸好 A 同学有这方面的经验,直接拿出了前一天团队成员在一起开会内容截图,包括上线内容、上线时间等,才免于让自己背锅。

整件事情我们抛开流程等是否合理,但就事情本身来说,假如A 同学没有强有力的证据,那么这个锅恐怕他是背定了吧。

被暗示让你主动离职该怎么办?

这种情况由于主观、客观原因的存在,都可能会发生的情况了。当然了,大多数的公司还是比较正规了,一般不会“赖”辞退员工应该赔付的赔偿款。但“林子大了,自然什么鸟都有”,万一这事落到你头上,此时,不要认为自己好像被优待了一样,没有给你直接辞退,而是提前告诉了你;其实此种情况,往往是没有直接让你走人的理由,假设你工作不合格,或犯有重大失误,恐怕早给你“下旨”了。

再者,对你自己而言,不要硬要留下来,也不要傻傻地选择主动离职,而是要考虑最重要的问题:

要争取赔偿。对公司而言,让你主动离职,自然是不想付你赔偿费了。而对于你,一定要留自己被暗示离职的证据,申请劳动仲裁。

这时需要注意的是:

(1)与不同人约谈,特别是 HR 时,有意识引导对方说出意图,自己说出工作无失误

等类似的对话,并留下录音等作为证据。

(2)留下自己工作无失误的证据,比如绩效、薪资、福利等方面的截图

(3)不要签署任何自动离职、不明所以等方面的协议,以免以后授人以柄

以下事情万万不可做

说与不说,首先要看是否可能会对自己产生不利的影响,如果有可能,请把可能当成一定不可说的事情例如:

(1)与同事大谈自己未来的工作计划。除个别铁饭碗外,一个人不太可能在一个公司永远呆着,自己要是有跳槽的想法,或者正在纠结要不要离职的时候,不要对同事说。

(3)与同事抱怨、说丧气的话。因为说了后,对现状不会有任何改变,万一隔墙有耳,传到 leader 那里,你想会有你的好果子吃吗?最好的结果恐怕就是:leader 说这是 xxx的问题,可以用数据说话等等,一是这是大家众所周知的方法,二是这类似的不痛不痒的话,并不会让你面临的问题因此减少

(3)答应可能需要背锅的忙。帮忙的结果一旦不如意,或者触及到他的利益,这时你不但得不到任何感激,反而会无故背锅,好像你是事情进展不顺的主因。

决定接受offer 前务必确认的几点

决定是否接受offer,除了发展前景、职位内容、工作地点等因素外,薪资待遇是比较重要的考虑因素了。不乏有某些模棱两可的一些信息,如果你自己不注意,入职之后可能会有不同程度的心理落差了。所以,本着对自己、公司都负责的角度出发,正式接受offer 前,请务必确认以下信息:

(1)试用期期间薪资如何给,正式薪资的 100%,还是 80%

(2)年终奖的奖金系数如何评定的。奖金系数除了直接和自己的绩效挂钩外,如果还和部门的绩效有关系(互联网公司往往如此),那么就要提前了解该部门的盈利情况如何了。

(3)还有一个和薪资涨幅有间接关系的一点,就是对应团队 leader 的情况了。当然了,之前的面试官大部分情况都会有团队 leader,可以自己评判一下了。当然如果可以,尽可能找内部人员打听一下吧。某个角度看,跳槽好坏很重要的一点就是能否跟对一个leader,因为遇到一个和自己三观不和的 leader,可能一段时间内你会相当憋屈。

写在最后

无论此刻的你是已经决定好好大干一场,还是决定跳槽寻找其他的可能性,都需要权衡好自己需要放弃什么、获得什么。但无论是哪个决定,无论这些个套路你是否遇到过,请务必提高警惕。

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

posted @ 2019-05-31 17:37 51testing 阅读(91) | 评论 (0) | 编辑 收藏
 
看完这篇文章,我奶奶都懂了https的原理……

Http存在的问题

  上过网的朋友都知道,网络是非常不安全的。尤其是公共场所很多免费的wifi,或许只是攻击者的一个诱饵。还有大家平时喜欢用的万能钥匙,等等。那我们平时上网可能会存在哪些风险呢?

  1. 泄密,个人隐私、账户密码等信息可能会被盗取。

  2. 篡改,收到的数据可能被第三方修改过,或被植入广告等。

  3. 假冒,访问的站点非目标服务器站点。如域名欺骗、域名劫持、钓鱼网站等。

  可能住你隔壁穿人字拖、说话都略显羞涩的小王,一到夜深人静的时候就开始偷窥你的一举一动!陪你一起看91某社区的电影还好,万一窃取了各购物网站或其他站点的登录信息就……是不是想想有些害怕呢!


      为什么别人能获取你上网的数据呢?有过一定网络基础的朋友多少都对TCP/IP有些了解,对各种握手挥手早已背得滚瓜烂俗,对http协议也早了然于心。http是应用层的协议,位于TCP/IP参考模型的最上层。用户数据经过应用层、传输层、网络层、链路层的层层封装后经过物理层发送到目标机器。在这几层中,数据都没有经过加密处理,所以一旦别人获取到你的数据包,就能轻易的获取到数据的信息。

  为了保护数据隐私,让数据不再“裸奔”。对需要传输的数据进行加密处理就很有必要了。目前而言,加密算法可以分两大类,一类是对称加密算法,还有一类是非对称加密算法。


对称加密

  对称加密算法的加密和解密都是用同一个密钥。在一定条件下,对称加密可以解决数据传输安全性的问题。比如我在登录某个网站的时候,需要填写账户名和密码进行登录,客户端把登录的表单信息进行对称加密后再传输,这时候就算小王截获数据包,他也无法获取数据的内容,因为数据已经被加密了。但是服务器收到数据后也是一脸懵逼,你发来的加密的数据包服务器也不知道解密的密钥!


  那是不是客户端与服务端在通信之前应该先协商密钥呢?客户端可以通知服务器需要开启数据传输了,然后服务器告诉客户端,咱们以后用xxxx这个密钥进行加密解密吧!


  这样内容是可以加密传输了,但是上图中第一步协商密钥的过程又同样存在安全的问题!万一小王截获了协商密钥的数据,那后续加密传输的数据对小王来说无异于未加密!所以,对称加密存在密钥协商的问题!

 非对称加密

  基于对称加密存在的问题,又有了非对称加密。非对称加密算法需要一组密钥对,分别是公钥和私钥,这两个密钥是成对出现的。公钥加密的内容需要用私钥解密,私钥加密的内容需要用公钥解密!私钥由服务器自己保存,公钥发送给客户端。客户端拿到公钥后就可以对请求进行加密后发送给服务端了,这时候就算被小王截获,小王没有私钥也无法解密发送的内容,这样确保了客户端发送到服务端数据的“安全”!但是由于公钥也需要通过网络发送给客户端,同样能被小王截获,这样服务器私钥加密后的内容依然可以被小王截获并解密,并且非对称加密的效率很低。

  对称加密和非对称加密都存在密钥传输的问题,但是至少非对称加密可以保证客户端传输给服务端的内容无法被“破解”,而对称加密算法性能又比较好,那我们是不是可以这样子呢。第一次通信的时候服务端发送公钥给客户端,由客户端产生一个对称密钥,通过服务端的公钥加密后发送给服务端,后续的交互中都通过对称密钥进行加密传输。也就是说先通过非对称密钥加密对称密钥,通过对称密钥加密实际请求的内容。


  上面的方案看起来天衣无缝,小王拿到数据后貌似就无偿下手了,但是真的就天意无缝了吗?我们看看下图


  也就是说小王可以伪装成服务器,与客户端进行通信。类似于你与服务端之间多了一个中间商!也就是说协商密钥的过程依然存在漏洞!

  有点脑阔疼!还能不能让我安全的上网了!就没有更安全的机制了么? 在协商密钥的过程中,客户端怎么能确定对方是真正的目标服务器呢?怎么证明服务器的身份呢?我们先了解一下数字证书!

数字证书

  我们生活中有各种证,有能证明自己是个有身份的人的身份证,有能证明自己读了几年书的毕业证。这些证都是由某些权威机关认证、无法伪造的,能证明自己身份的凭据。那服务器是不是也能有个类似身份证的东西,在与服务器进行通信的时候证明自己确实是目标服务器而不是小王伪造的呢?在生活中这些证件都是事实在在能看得见摸得着的,而计算机中的证书是虚拟的,看得见但是摸不着,是数据形式记录的,所以叫数字证书!

  客户端第一次与服务器进行通信的时候,服务器需要出示自己的数字证书,证明自己的身份以及自己的公钥,类似如下(实际上就是一堆数据,这里为了直观)


  那这个数字证书怎么产生的呢?总不能是服务器自己造一个吧?上面说到了我们生活中的证书是由权威机构颁发的、无法伪造的,比如身份证就是由派出所发证、毕业证由教育部发证,如果需要验证真假,只需要上相关的系统输入编号查询就能查到了!那我们数字证书也应该有这两个特性-权威机构颁发、防伪!

 CA机构

  CA机构就是数字证书颁发的权威机构,负责颁发证书以及验证证书的合法性。如果服务器需要做个有身份的服务器,就需要向CA机构提交申请,当然有钱才好办事,交钱才能给你办证……

  服务器向CA机构提交申请,需要提交站点的信息如域名、公司名称、公钥等等,CA审批无误之后就可以给服务器颁发证书了!

  客户端在拿到服务器的证书后,就需要验证证书编号是否能在对应的CA机构查到,并且核对证书的基本信息如证书上的域名是否与当前访问的域名一致等等,还可以拿到证书a中服务器的公钥信息用于协商对称密钥!

  证书颁发了,可是又怎么防止伪造,怎么保证在传输过程中不被篡改呢?万一小王截获到数字证书,把公钥改成自己的那不是依然无法保证安全了么?这就需要数字签名了!

数字签名

  与公司签过劳动合同的朋友应该都知道,在合同信息的填写中,是不能有涂改的,否则需要重新填写!并且在最后需要甲方和乙方签名并且盖章。一旦签名盖章后的合同就具有了法律的效力,合同就不能再修改。签名和盖章操作就是防止合同伪造,规定不能修改就防止了合同被篡改!

  在实际生活中签名、盖章操作是实实在在的动作,作用在具体某个物体上的!但是我们的数字证书本身就是虚拟的,怎么去给一个虚拟的证书签名盖章呢?数字签名又是什么机制呢?

  我们在做权限系统的时候,存储用户密码的时候都会经过MD5计算摘要后存储,在登录的时候计算用户填写的密码的MD5摘要与数据库存储的摘要进行对比,如果一致则密码正确,否则登录失败!MD5是不可逆的,且不同的数据计算出来的摘要是不一样的(当然也有极小的概率会hash碰撞),基于这个特性,就有了数字签名的思路。

  服务器提交自己的基本信息想CA机构提出申请,CA机构在给服务器颁发证书的时候,会连同数字证书以及根据证书计算的摘要一同发送给服务器,且这个摘要是需要经过CA机构自己的私钥进行加密的。申请流程如下:


  啥?不够直观?那我们再来个直观点的!通过下图我们能看到,CA给服务器颁发的证书是有自己专属的“公章”的。


  哪些CA机构对于客户端来说是权威或者说是认可的呢?我们打开IE浏览器能看到客户端内置的CA机构的信息,包含了CA的公钥、签名算法、有效期等等...


  服务器在与客户端通信的时候,就会将数字证书和数字签名出示给客户端了。客户端拿到数字证书和数字签名后,先通过操作系统或者浏览器内置信任的CA机构找到对应CA机构的公钥对数字签名进行解密,然后采用同样的摘要算法计算数字证书的摘要,如果自己计算的摘要与服务器发来的摘要一致,则证书是没有被篡改过的!这样就防止了篡改!第三方拿不到CA机构的私钥,也就无法对摘要进行加密,如果是第三方伪造的签名自然也在客户端也就无法解密,这就防止了伪造!所以数字签名就是通过这种机制来保证数字证书被篡改和被伪造。具体流程如下:


  啥?又不够直观?那我们继续...


  这里需要注意一点,一个是CA机构的公钥,内置在客户端,用来解密数字签名!另一个是目标服务器的公钥,在数字证书内容里,用来协商对称密钥!

HTTPS

  本文的标题是HTTPS,但是到目前为止HTTPS只字未提!其实HTTPS=HTTP+SSL,在HTTP层和TCP之间加了一个SSL/TLS层,如下图:


  SSL(Secure Sockets Layer)中文叫“安全套接层”,后来由于广泛应用,SSL标准化之后就改名为TLS(Transport Layer Security)了,其实HTTPS就是通过上面说到的那些手段来解决网络上可能存在的数据泄密、篡改、假冒的这些问题,保证网络传输的安全的啦!

  看到这里的你,对HTTPS的原理是否懂了呢,反正我奶奶看完已经懂了!手动狗头(* ̄︶ ̄)

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

posted @ 2019-05-30 17:41 51testing 阅读(100) | 评论 (0) | 编辑 收藏
 
年薪20W+的数据科学家有哪些必备技能?先从Python数据分析开始!

去年我决定从传统水利行业跨行到数据科学领域的时候,满脑子都是困惑与担心,犹豫放弃所学多年的专业知识值不值得,担心万一转行失败怎么办,纠结实际工作比想象中的难怎么办。

没遇到指点迷津的大佬,只好网上各种搜,众说纷纭,最后在「要不要转行」这个问题上浪费了很长时间。在跨过这个坎之后,回头来看以前那些问题,思路清晰很多。

一路走来,我也积累了不少有用的技巧,现在就将数据科学家必备的技能分享给大家!


在开始阶段,相比具体的专业知识,更重要的是大方向把握。好比,你告诉我旅途上的风景有多么多么美,但我想先知道是哪条路,好判断能不能去到。

1.R编程

对于数据科学家来说,R的至少是所有分析工具最应该深入了解工具,因为R专为满足数据科学需求而设计。你可以使用R来解决数据科学中遇到的任何问题,事实上,43%的数据科学家正在使用R来解决统计问题。然而,R有一个陡峭的学习曲线。如果你已经掌握了某种编程语言,那么就会更难学习。不过不要担心,互联网上还有很多资源可以帮助你开始使用R,例如Simplilearn的R编程语言数据科学,它是有抱负的数据科学家的重要资源。

技术技能:计算机科学

2.Python编码

Python是适合数据科学家学习的一种优秀编程语言,也是我在数据科学角色中看到的最常见的编码语言,其中还有Java,Perl或C/C ++。O'Reilly曾经调查过数据科学家,调查的受访者中有40%使用Python作为他们的主要编程语言。

由于python的多功能性,你可以将其用于数据科学过程中涉及的几乎所有步骤。它可以采用各种格式的数据,同时可以轻松地将SQL表导入代码中,并且还允许你创建数据集,这样你就可以在Google上找到所需的任何类型的数据集。

3.Hadoop平台

虽然这个不是硬性要求,但在许多情况下它是非常有用的,拥有Hive或Pig的经验也是一个很好的加分项。CrowdFlower对3490个LinkedIn上数据科学工作者进行的一项研究发现Apache Hadoop被评为数据科学家第二重要技能。

作为数据科学家,你可能会遇到这样的情况,即你拥有的数据量超过系统内存或需要将数据发送到不同的服务器,这时Hadoop就能发挥其作用了。你可以使用Hadoop快速将数据传输到各种系统上的点。同时你还可以使用Hadoop进行数据探索、数据过滤、数据采样和汇总。

4.SQL数据库/编码

尽管NoSQL和Hadoop已经成为数据科学的一个重要组成部分,但大多数人还是希望能够在SQL中编写和执行复杂查询。SQL(结构化查询语言)是一种编程语言,可以帮助你执行添加,删除和从数据库中提取数据等操作。它还可以帮助你执行分析功能和转换数据库结构。

作为数据科学家,你需要精通SQL,因为SQL可以专门用于帮助你访问和处理数据。当你使用它来查询数据库时你会发现,它简洁的命令可以帮助你节省时间并减少执行困难查询所需的编程量。学习SQL将帮助你更好地理解关系数据库并提升你作为数据科学家的形象。

5.Apache Spark

Apache Spark正在成为全球最受欢迎的大数据技术。它就像Hadoop一样是一个大数据计算框架,唯一的区别是Spark比Hadoop更快。这是因为Hadoop需要读取和写入磁盘,这使得速度变慢,但Spark将其计算缓存在内存中。

Apache Spark专为数据科学而设计,它可以帮助更快地运行复杂的算法。它还有助于数据科学家处理复杂的非结构化数据集,你可以在一台机器或一组机器上使用它。Apache spark使数据科学家能够防止数据科学中的数据丢失。Apache Spark的优势在于其速度和平台,这使得开展数据科学项目变得容易。借助Apache spark,你可以执行从数据采集到分布式计算的分析。

6.机器学习和AI

大量数据科学家并不精通机器学习领域和技术,这包括神经网络,强化学习,对抗性学习等。如果你想从其他数据科学家中脱颖而出,你需要了解机器学习技术,如监督机器学习、决策树、逻辑回归等。这些技能将帮助你解决基于主要组织结果预测的不同数据科学问题。

数据科学需要应用于机器学习的不同领域。Kaggle在其中一项调查中发现,一小部分数据专业人员具备先进的机器学习技能,如监督机器学习、无监督机器学习、时间序列、自然语言处理、异常值检测、计算机视觉、推荐引擎、强化学习和对抗性学习。

7.数据可视化

商业世界经常产生大量数据,这些数据需要被翻译成易于理解的格式。与原始数据相比,人们可以更自然地以图表和图形的形式理解数据,常言道:“一张图片胜过千言万语”。

作为数据科学家,你必须能够借助数据可视化工具(如ggplot,d3.js和Matplottlib以及Tableau)可视化数据。这些工具将帮助你将项目中的复杂结果转换为易于理解的格式。问题是,很多人不了解序列相关性或p值,你需要直观地向他们展示这些术语在结果中的表示。

数据可视化使组织有机会直接处理数据,他们可以快速掌握并且帮助他们在竞争中抓住新商机。

8.非结构化数据

数据科学家能够处理非结构化数据至关重要。非结构化数据是未定义的内容,不适合数据库表,其中包括视频、博客文章、客户评论、社交媒体帖子、音频等。对这些类型的数据进行排序很困难,因为它们没有逻辑可言。由于其复杂性,大多数人将非结构化数据称为“黑暗分析”。使用非结构化数据可以帮助你揭示对决策有用的洞察力。作为数据科学家,你必须能够理解和操纵来自不同的平台的非结构化数据。

9.那么新手应该如何入行数据科学领域?

下面这份报告中提出了一些数据科学老司机给新手学习者的建议,可以说是非常良心了!这一部分可能是本份报告中最有价值的部分,敲黑板划重点!

“你们会推荐新手先学哪门语言?”

先学Python!这是综合了超一万名老司机的意见给出的结论。


如何入门Python数据分析呢?


posted @ 2019-05-29 17:39 51testing 阅读(78) | 评论 (0) | 编辑 收藏
 
进阶Python高手的正确姿势:巧用Python实现数据分析【隐藏攻略】

Python语言得天独厚的优势使之在业界的火热程度有增无减,尤其是在经历了互联网,物联网,云计算,大数据,人工智能等浪潮的推动下,其关注度、普适度一路走高。


究其原因,主要有以下5个方面

1)简单易学:逻辑简单,语法更加贴近英语,初中水平也可入门

2)免费开源:共享代码,让Python变得简单

3)标准库:拥有强大易用的标准库,让编程更方便

4)]代码极短:相同功能Java与Python代码数量对比,显而易见

5)一码多用:可以用相同的代码处理不同规模的数据,以及并发的用户需求

眼看6月份毕业季又要来临了,职场又会涌入一批新生力量,你凭什么要求一家企业高薪聘用你?别告诉我,小学生都会Python了,你还仅仅只会些Python基础?!好了好了,我懂你!

作为编程爱好者,尤其是Python爱好者,每每和粉丝私下交流学习心得时,都能感受到大家遇到了很多问题,我大致分为了以下3类:

1、「基础不牢」类型:最近在自学数据分析,发现自己的 Python 基础太薄弱了,导致学的很吃力,原本一个别人只要花 10 掌握的知识点,自己要花 30 多分钟去查漏补缺……心累。

2、「学过就忘」导致「无法进阶实战」类型:学了些,但一直处于入门到做简单自动化的阶段,真到做项目了,明明有想法,实现落地却是很痛苦,各种查找都不是自己想要的效果,实现起来进度特别慢……完全没人指导。

3、「半路转型迷茫」类型:工作中一直用的 Java,最近看到谷歌在新的 Android 开发项目中放弃了 Java,深感 Java 前景堪忧。想学习下现在流行的 Python ,但会不会太晚了?该怎么学?太多问题可能成为你路上的坎,一不小心就掉入深渊,更别提什么深度学习、人工智能、大数据了。

试问:为什么在学习Python的过程中会遇到这么多困惑?

我想回答一定有无数种,但大部分人的原因是这样的:没有找到一个好的学习方法,没有高手带路,没有人去督促你学习,或者没人在你出现疑惑的时候,及时给你解答……

为了更清晰认识Python,我帮大家梳理了Python的学习路线:


那测试员应该掌握Python到什么程度?

首先你要搞清楚,对于python测试从业人员而言,学习python意味着什么?可以写自动化脚本,构建自动化测试框架,这无疑是测试界公认的“真理”;然而......Python的世界很精彩,如果你只了解他的冰山一角,那真是暴殄天物了!

经常有朋友会问起大数据,人工智能,那么这些东西的核心是什么?数据!通过对海量的数据进行分析,我们可以从中窥探出数据变化的趋势,从而尝试进行数据建模,进而用这套模型对某一事物的未来走向进行预测,这才是这些数据存在的意义,否则再多的数据也只是一盘散沙。

如何在海量数据中大浪淘沙,获取有价值的数据为我们所用呢,如果提炼这些数据进而分析各种关联呢,Python数据科学库给我们提供了便捷的路径及解决方案,就此我特地为大家邀请了51Testing的资深技术大咖为大家带来一场高能Python进阶直播课:

《揭秘数据挖掘与分析,Python数据科学初体验——入门最好的练手案例》:

√一则案例入手,科学计算库numpy初体验

√numpy的亮点

√“数学小常识”考考大家”小学”毕业了吗? ^_^

√数据分析的通用流程

√在线数据分析及处理,结合案例,numpy再体验

√Python数据科学领域装备N要素

【适应人群】

1.有python基础(前提)

2.不局限于当前工作/学习中所涉及的python领域

3.对python科学计算库感兴趣

4.对python数据提取|分析|处理感兴趣

5月30日中午12:30,一起进阶Python高手,高薪就业指日可待!

限时低价

扫码立即领取优惠(备注:530)


目前已有5万+学生听过我们的课程

优惠倒计时3天

一堂课拿下Python进阶所有知识点!

posted @ 2019-05-28 17:59 51testing 阅读(63) | 评论 (0) | 编辑 收藏
 
仅列出标题
共55页: First 3 4 5 6 7 8 9 10 11 Last