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

离职后,我只想找份功能测试,面试官却把我逼上绝境……

现在的测试都需要会用8种语言来写Hello World!测试开发的等级也分的越来越细。所谓"点点点"的功能测试员,是否没有出路?我就是一个功能测试,工作内容包括"点点点",但得知道从哪里入手点点点,和借助什么工具。

很多公司面试人都是:面试造火箭,工作拧螺丝。作为一线大厂,我遇到的面试官并没有遇到过这个情况。我很幸运的没有被"虐"的很惨,也顺利入职了一座伟大的公司,从此开始了我软件测试发展之路。

到底我们应该如何准备面试,如何把面试最大程度的掌控在自己手中,如何了之自己面试的问题,并及时改进?用什么科学有效的方法能够快速提升自己的面试能力?企业面试官到底在考核哪些能力?我们应该如何最大程度满足企业的用人需求呢?.......

下面我们先计划以“接口自动化测试面试”为核心,来推展演绎面试过程中的种种需要改进的问题,以及改进的方法。以第一人称“我”的方式来进行叙述,让大家在轻松真实的环境中,能够看到自己面试中存在的各种问题,并学习如何进行自我剖析,让自己在学习的过程中不断获得各种成长!特别感谢Lucy老师在面试方面给我的启发和指导,让我受益匪浅。

下面跟我一起直击面试现场:

先投简历试试看,别想那么多,说不定能碰上一个好机会!我很快把自己前几年的工作经历进行了一次梳理,加入了一些新的项目和技术点,开始投递简历。还不错,投出去的简历收到了一些面试邀请,准备了准备,就去面试了。

“你为什么离职?”

“奥,我被辞退了,我们公司裁员了......”

(Lucy老师即时贴:这样的说法会让面试官误会我们能力不行才被辞退的。建议可以稍微分析一下公司运营的情况,为什么不景气,有哪些方面是客观原因,有哪些方面是主观原因,作为测试工程师,我们对于公司能做到哪些,但哪些是做不到的,可以具体分析。然后稍微说一下自己对裁员的看法,注意一定要从积极、相互理解的一面讲。最后一定要明确一句话,裁员并不可怕,只要自己能力足够强,找到能发挥能力的公司和平台还是非常有信心的。)

我一直不明白为什么面试官基本上都没怎么问技术,就把我打发走了。

(Lucy老师即时贴:一般而言,如果面试时间少于20分钟,也没问什么工作技术细节,基本上可以断定我们在开始的面试问题中有比较严重的失误,一定要尽快找到有经验的朋友或老师进行请教才可以继续面试,否则这样的短暂面试只能是浪费面试机会。)

浪费了很多次的面试机会,我实在不知道问题出在哪里,就找了以前培训时上课的Lucy老师。还好老师及时的指出了在回答为什么离职这个问题中的严重失误,面试开始慢慢步入正轨,开始问到了工作和技术问题。

“你做过自动化测试吗?”

“没有参与过”

“那你了解自动化测试的一些工具或技术吗?”

“不好意思......”

我非常不明白,虽然自己特别想做自动化测试岗位,但是因为也了解自己没有做过这方面的工作,所以保险起见,还是投递了一些手工测试的岗位。但为什么就是这样的手工测试岗位还是不停的问“自动化测试”的问题,实在让我一头雾水。

(Lucy老师即时贴:手工测试因为难度小,技术含量低,在面试过程中很难拉开差距。一方面公司希望招聘的人员有一定的扩展和提升能力,另一方面面试官通过这一类问题也好有一个筛选的标准。所以即使是没有完全标明是“自动化测试”岗位,也是必然要问到自动化相关技术方面的问题的,这已经成为测试工程师面试的必问问题而不是可选问题)

通过Lucy老师的指点,我虽然知道了自己的问题是缺乏自动化测试这个必须的“加分项”,但是短时间要想提升谈何容易,我想要不就少要点薪水先上班算了。

(Lucy老师即时贴:虽然不十分赞成蔡奇的这个用减少薪资来争取offer的想法,但也没有完全阻止蔡奇去尝试,但是和蔡奇明确了面试尝试的次数:最多3次,如果还没有拿到offer就不能再用这个方法了,这相当于“贱卖自己”,完全是下下策。)

我因为着急想上班,还是有意识的压低了薪水,以前的薪资拿到手虽不到10K,也差不多这个左右,现在我要的薪资就只有9K,而且还是转正后的,试用期的薪资一般都会是转正薪资的80%。可即便如此,面试了2家觉得聊的还可以,但是还是没有拿到offer。这个结果让我备受打击,不知道问题出在什么地方?

(Lucy老师即时贴:一般而言,不建议以降低薪资(比以前的工作薪水低)的方法来正确offer。原因有这么几点:1、违背职业发展的一般规律,最低是持平发展,很少有自降薪水的;2、如果自己主动降低薪水,也说明自己的心态出现了比较大的问题,不是过于着急就是严重缺乏信心;3、一般面试官也都是“买涨不买跌”,所以自降薪水反而不利于面试。此次蔡奇降薪后面试仍然遇阻还有一个客观原因就是将近春节,是一个用人淡季,企业因为不是特别着急纳新,所以也就自然“搁浅”了。)

原来有条不紊的我开始坐不住了,一个多月过去了,以前找工作没有这么费劲,怎么现在有了3年工作经验反而这么不好找了呢?我百思不得其解。

(Lucy老师即时贴:有工作经验但是缺乏难度和深度,只是在熟练度上有区别时,面试确实会遇到瓶颈。原因分析:因为虽有工作经验,但是新入职一个公司后,还是要重新学习业务、流程或环境,也差不多是要重新开始,所以所谓的熟练度也不见得立刻就能起效。在这样的条件下,但是我们期望的薪资要比新手高很多,比如一个刚刚做测试的,可能5,6K也能接受,无非就是得带一段时间,但是因为手工测试整体技术都比较简单,只要这个人不是很笨,很懒,基本上带1个月左右也能上手,所以企业最多也就多投入几周的时间。虽然我们有3年的工作经验,上手更快,但至少也得2-3周来熟悉业务和环境,熟悉之后,基本上和新人区别不是很大。但是新手只要5-6K,我们可能要10K左右。但是我们无论多么熟,一定没有招两个新人工作效率高,这是必然的。所以越是简单容易的工作,越是容易被替代。这就让我们感觉有一定工作经验没有刚开始的时候好找工作,就是因为性价比降低的原因造成的)

我终于明白了问题所在,但自己该何去何从呢?降薪这招都使出来都不行,还不到30就退休,岂不是太离谱了吗?

(Lucy老师即时贴:去“镀金”就能面试上!)

Lucy老师经常说要跳出旧的思维模式,以全新的思维来考虑解决问题的方法,适当的时候有必要给自己“镀金”,学习和掌握更多新技能,为自己创造更多的机会!

关注公众号:51Testing软件测试网,获得更多干货,提升it技能,从不会到熟练只差一步。
posted @ 2019-11-14 17:52 51testing 阅读(118) | 评论 (0) | 编辑 收藏
 
银行线上信贷系统如何做好接口测试?手把手教你接口工具Postman

近年来,伴随着金融科技、互联网金融业务的浪潮,依托大数据、人工智能、云计算等技术的进步,线上信贷产品在银行信贷业务中占据越来越多的比重,承载这些业务的银行系统通常具有关联系统众多、接口调用关系复杂等特点,测试难度较大。于是,我们以接口自动化测试为切入点,对线上信贷业务的测试工具及其应用开展探索和研究。

点击添加图片描述(最多60个字)

一、工具选择

工欲善其事,必先利其器。我们调研了 Postman 、Poster 、Jmeter 等几款开源的自动化测试工具:

JMeter:一款开源的性能测试工具,操作简单、方便,既有 JDBC request 操作数据库数据,也有 Http request 和 Soap request 应对测试。它通常可以用于测试静态或者动态资源的性能(文件、Servlets、Perl 脚本、java 对象、数据库和查询、ftp 服务器或者其他的资源),使用 JMeter 提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。

Poster:火狐浏览器自带的借口测试工具,插件中安装即可,界面简单明了,容易上手。

Postman :原为谷歌浏览器的扩展工具,目前已成为独立软件,界面简洁,与Poster 差别不大,功能较 Poster 更为强大,可保存执行场景并分类管理。支持通过Newman 等插件进行命令行提示符调度运行。

Cucumber:与以上几种特定工具不同,更像是一个以场景编辑器,需与其他测试工具结合使用。功能齐全,需要一定编程技术基础,学习成本较高。

经过调研,我们发现,Postman 是一款功能较为强大的 Http 调试与模拟插件,可以发送几乎所有类型的 Http 请求。同时,它界面功能较为友好,使用方便,应用较为广泛。

点击添加图片描述(最多60个字)


点击添加图片描述(最多60个字)

二、线上信贷业务接口测试的实际应用

完成工具调研之后,我们结合线上场景贷款的典型业务流程,对 Postman 工具进行了应用。

线上贷款产品,通常由客户自助发起,从通过各种渠道入口(例如:掌上银行、网上银行、网点柜面)进行申请和办理。针对我们关注的线上贷款运算逻辑,我们使用Postman 工具来模拟从各个渠道系统发送过来的请求报文,实现对信贷系统的测试,通过调整不同的输入信息,验证系统处理逻辑。

在贷款申请、审批、放款三个环节,使用 Postman 编制三支接口功能测试脚本;在线上贷款的申请、审批和发放三个环节中,通过在 pre-request script 设置序列号进行参数配置,从返回值中抓取变量的返回结果进行变量存储关联,实现了不同环节的报文串联;通过在 Collections 集合中统一管理和调度脚本,使脚本集合能够支持业务从头到尾的全流程自动化测试和验证。

点击添加图片描述(最多60个字)

线上信贷业务系统除了关注业务处理逻辑之外,对于客户信息,如:姓名、身份证号、手机号等需要做重点的校验,包括唯一性校验、信息字段本身的合法性校验等。这无疑给我们的接口自动化测试带来了很大困难,对于这种多样性问题,Postman 有什么好的解决办法吗? 通过探索实践发现,我们可以编写 JS 脚本去解决这个问题。 例如:

1、客户姓名自动生成

点击添加图片描述(最多60个字)

2、客户手机号码自动生成

点击添加图片描述(最多60个字)

经过实际使用,Postman工具可以较好的支持上述场景的接口测试,支持测试数据和测试参数的配置,统一管理和调度测试执行,通过脚本的导入导出实现脚本备份和共享。另外还可以通过使用环境变量配置实现同一测试集合脚本在不同测试环境中的运行,使用 Newman插件实现脚本的命令行执行,大大提高了脚本实际应用的便利性和可扩展性。

扫码关注公众号,获取更多测试干货!欢迎转载,转载文章请在微信后台留言哦!



posted @ 2019-11-11 18:36 51testing 阅读(825) | 评论 (0) | 编辑 收藏
 
月薪20K软件测试开发岗基础知识总结,揭开测试工程师的进阶之路

时光荏苒,从毕业到现在已经10年,10年来一直从事着软件测试的工作。从一个什么都不会,到测试开发工程师,期间有迷茫,有痛苦,有弯路,有捷径。今天对自己过去的10年测试经历做一个总结,一是给自己重新出发增加动力,二是给刚入道的、迷茫中的测试朋友一点点建议,希望你们少走弯路。

点击添加图片描述(最多60个字)

1、首先,谈谈测试职业规划,即做什么的问题。

所谓方向比努力重要,这绝对是一句真理。如果能在刚走上测试工作岗位的时候明白这个道理,那么不出5年,你一定能成为某一测试领域的专家,那时不管是薪水、自信心都是顺其自然的事情。

但是遗憾的是,我们获取的太多信息是,测试人员是一个通才,什么都要学,什么都要懂。结果这样的一个方向,导致了三脚猫功夫的测试人员一大把。那么什么都懂一点的测试人员难道就没有用武之地了吗?也不是,随着互联网市场竞争越发激烈,软件研发效率要求越来越高,自动化测试成为测试团队提高效率的首选,在企业招聘软件测试中高级岗位时,熟悉自动化测试、接口测试、掌握热门工具使用、开发测试框架等已成为硬性指标。针对有点测试基础,希望深入进阶,可以朝着测试开发岗位发展。说到这里,引出了测试职业规划的全能路线:测试开发,提升自身测试能力,成为全能型人才,成为测试团队核心支撑。

2、其次,谈谈测试工程师的现状

很多测试小伙伴在工作中有时会比较迷茫,不知该怎样突破瓶颈,更好的发展。

那么测试人员究竟该如何打破瓶颈继续向上提升呢?如果你苦于不知所措,又满怀斗志向上的话,不妨一起聊聊。测试职业发展有典型的三种方向:

管理方向

技术型方向

转行

在此重点说下技术型方向的发展。曾几何时,提的bug被否认而倍感无力;曾几何时,遇到一个偶发复现的bug,到上线了都不知道该怎么复现;曾几何时,面对没有前端页面的测试任务,不知该从哪下手测试;曾几何时,面对每天重复繁琐的测试工作,恨不得有个机器人来帮忙。

依稀记得,有天发现一个bug,于是远程debug,一行代码一行代码的走,终于定位到是数组下标越界了,提出bug并附上断点定位的代码截图,开发看后瞬间改了,自此赢得开发不一样的认可。那么懂代码就算是测试开发工程师吗?答案是否定的,那究竟怎样才能做一名测试开发工程师,有哪些优势,和开发的区别又是什么呢?

3、测试开发工程师有什么作用呢?

对测试开发工程师来说,看懂代码,熟练使用测试工具,能做ui、接口、性能的测试,具备测试经验和测试思想逻辑是基本要求;既要会业务功能测试,又要能做代码层接口及单元测试,更重要的是通过能力和经验的积累,能搭建适用于技术研发团队的工具平台,以更好的降低公司成本和提高工作效率。在这样的理念下我们部门按照软件的生命周期,自主研发了整套的测试平台:

源代码监控分析平台,配置化平台实现对源代码进行系统化、规则化的全面覆盖测试,通过智能规则模型的有效过滤,及早发现问题,提高项目质量。

接口自动化平台,不用写一行代码就可完成对接层的测试,完美支持http和jsf接口,并生成美观可视化的报告;

UI自动化平台,让不懂代码的小白测试人员便捷快速的上手ui自动化测试工作,以往需要自己写代码,现在直接在页面维护一些元素即可;

测试工具平台,现已涵盖十几个大的业务系统,几十个便捷的功能,可快速、便捷的产生和查询测试数据,减少测试人员的联调时间和营造复杂场景数据的时间。上线时间虽不长,使用频次近3万,大大方便了开发、测试和产品人员。

BUG监控分析平台,通过对bug大数据进行分析、归类、汇总的智能处理,采用图表方式更加简洁明了的查看项目质量和进度;

4、测试开发工程师的必修课程

如何才能成为一名真正的测试开发工程师,需要具备哪些硬技能呢?

1)具备一定测试经验。

只有设身处地的经历过测试人员的痛点和难点,才能切实解决他们的问题。

2)会使用常用重要的测试工具。

比如性能测试常用的Loadrunner、jmeter;ui自动化常用的selenium;单元测试常用的testng、junit;安全测试常用的appscan,js注入,xss注入,sql注入等等。

3)具备测试工具开发能力。

下面介绍一些主流的技术栈:

测试工具系统框架搭建:1)java+maven+SpringMVC ;2)python+django

对于第一种框架,最好创建分层化的多模块工程,以便更好的设计代码框架和结构。通常dao层主要是和数据库关联;web层是controller,是前端和服务层的衔接;service层提供一些公共服务或业务处理逻辑。

Maven工程有了之后,运用当前主流的框架-springMVC,将前后端数据库关联起来。

对于无代码基础,想入门测试开发的小伙伴,可学习第二种框架:python+django,较为易学易用。

前端页面:html,css,jquery,bootstrap,Echarts,前端页面是门脸,是使用人员操作的入口,也是数据输入和展示最直观的地方。

Css样式决定页面布局和美观度;jquery是一种js框架,极大地简化了 js 编程;echarts能够提供简单易用的常用图表,使页面更加有档次感、数据展示更加直观简洁。

后端服务:spring,mybatis,使用Spring框架可以简化很多基础性的工作,配置好后可以方便构建业务应用,是一个非侵入性的轻量级容器。

数据库:Mysql或Orcale 的数据库安装,库表创建,字段设计,常用的sql语句

系统:能熟练在windows或linux系统上搭建项目,日志查看等操作

服务容器:tomcat服务部署,nginx负载配置,docker使用

持续集成:git,jenkins

开发工具:idea和eclipse

代码调试:testng或junit的单元调试及debug和远程debug使用

5、那么,如何从一个有点测试基础的菜鸟变成测试开发工程师呢?

工欲善其事,必先利其器。

只有真正掌握专业知识,不用担心犹豫,无论走到哪都是有饭吃。不用担心自己能否胜任新的工作。人心叵测,世事多变,只有真正掌握了技术能力的人才会在工作中游刃有余,一定是自己身上有别人不可多得的能力,有与众不同的技术,有社会需要的知识,这样去哪都是有饭吃的。

最后想说测试开发这个工作真的不是吃青春饭的,如果你肯努力,肯学习,你就是常青树!

扫码关注公众号,获取更多测试干货!欢迎转载,转载文章请在微信后台留言哦!




posted @ 2019-11-08 17:41 51testing 阅读(286) | 评论 (0) | 编辑 收藏
 
当测试覆盖率达到100%了,软件测试员还会遇到什么问题?

我们思考,什么需要测试覆盖是“完整的”的方式,影响了我们如何测试和创建的测试用例。毕竟,一般情况下你只会为发生在你身上的情况设计测试——正常来讲,你也只能测试那些看得到的东西,是时候该脱下眼罩了。

下面介绍如何能在你的产品中找到发生bug的地方,接着调整你的策略来精确地定位到它们。


当我在一家保险公司工作时,我处理了大量的数据提取程序。在那段时间里,我从来没有见过一个需求文档来指明数据库关闭时应该做什么,即便大多数测试都是基于这些需求的。

任何专家都可以使用需求文档并创建一个地图、要点或电子表格来构建一个“覆概率模型”。整个软件公司都存在可视化这些模型,当测试“覆盖”到这些功能时,把它们设计成全部从空白闪烁到绿色。

然而,不可避免的是,当接口在运行而数据库关闭的时候,将会发生什么事情……不可预知。

到处都是盲点。我们就是看不到它们。

自动化测试

在类似于客户测试的世界中,今天对测试的主要思考方式是基于用户界面和工具。按住一个按钮,看着屏幕飞过(或基于云的客户端),然后一个小时后回来并得到结果。这是惊人的——几乎是神奇的。

我使用这些工具的经验是它们不能打印,或者说如果它们能,这些工具缺少检查生成的PDF文档是否呈现正确文本能力。它们当然不能检查结果是否正确。大多数工具甚至不能通过模拟的对比发现错误的地方。当一个人可以在一个复杂的表单上连续按十次tab键来检查tab顺序时,这项工作是如此难以编程,以至于大多数人都跳过了对tab顺序的任何自动检查。

工具变得越来越好。几年前,人们常常混淆屏幕,使按钮或链接不可见,因为它隐藏在其他东西下面,但是Selenium之类的工具可以单击它。今天,一些工具解决了这个问题。其他人添加了对屏幕的一部分进行用户界面比较的功能,以及用于快速审批的工作流。

不过,你还是明白我的意思。该工具使测试打印成为不可能。当我们不为打印创建自动化测试时,最终我们将停止测试打印。

我们认为测试的覆盖率是“完整的”,或者“测试是完整的”可能意味着什么,这将影响我们所做的事情。

功能测试

当我教授测试时,我早期的经验之一是关于失败模式的——也就是说,软件可能崩溃的方式。这包括两种常见的缺陷,比如程序员反复犯一些相同的错误. (“不管他们接触到什么,开发者似乎总是在破坏ALF组件”),以及平台常见的故障模式。如果我在用一个低成熟度的团队测试一个移动应用程序,我可能会尝试从拥有无线数据到没有覆盖,然后再回来。

对于具有复杂图形的web应用程序,我将大量调整窗口的大小。我将打开多个选项卡并在它们之间切换。我将在平板电脑上试用这个应用程序,然后把平板电脑翻转过来。我将发送一个链接到另一个需要登录的设备,并尝试在不登录的情况下访问链接。所有这些都是响应式设计的常见故障模式,但我从未在任何仪表板或正式的测试步骤中看到过它们,除非我的公司创建了这个列表。

也许资深人士“只知道”要根据经验来测试这种方法。资历较浅的人当然不会。测试方向变得越规定性,我们越专注于把事情写下来以便我们可以雇佣低技能的人,我们就越有可能得到这样的结果:人们完全按照测试说的去做,他们错过了所有的错误。

使用测试工具,这不是一个风险;它是保证。自动化工具只会按照您的要求去做。与此同时,评估调整窗口大小的结果是一项非常复杂的任务,非常难以编写。

因此,人们不需要记录自动化或构建逻辑来模拟这些行为。

也许,在某种程度上,这是可以的。另一位测试培训师詹姆斯·巴赫(James Bach)曾告诉我,有些人不想花钱买手工制作的木制家具。对他们来说,便宜的、自己组装的配件就足够了。制定计划,让电脑来做裁剪——够好,毕竟,足够好。

但是在软件中,廉价的、千篇一律的测试(和测试工具)意味着缺失bug,这可能是因为覆盖模型没有考虑它们。

新策略

这里有一种方法,可以让你在午餐时间和一天之间找出你错过了什么。

看看在过去的6个月里,程序员漏掉的所有bug。(如果你的敏捷团队没有跟踪这些,你可能想要开始,至少在短时间内。) 对于每一个人,不要把它与根本原因联系在一起,而是与他们将如何被看见——他们如何显现——联系在一起。

然后查看每种减少缺陷的机制,从代码评审到人工探索再到工具。如果可以的话,问一问你现有的正式流程是否已经发现问题,而且如果确实是已经发现了也需要问一下。

接下来做两件事。分别从人员和流程两方面着手,以防止整个类别的缺陷,并消除盲目性。找到bug所在,并调整测试策略来找到它们。考虑一个覆盖模型,它是关于缺陷类型的,以及您使用测试、检查、观察和走读来“覆盖”它们的所有方法。

我们有理由为盲人辩护;他们帮助马直走。它们也阻止了探险。

谁想要?

加我微信:atstudyIT  回复关键词“测试”领取限量软件测试学习资料哦~~

posted @ 2019-11-06 17:39 51testing 阅读(271) | 评论 (0) | 编辑 收藏
 
同样是做测试,为什么别人年薪30W+?写给测试路上迷茫的你
     摘要: 求职?择业?跳槽?职业规划? 作为一名初出茅庐的软件测试员,职业发展的道路的确蜿蜒曲折,面对一次次的岗位竞争,挑战一道道的面试关卡,一边带着疑惑,一边又要做出选择,只能无奈的感叹:比你优秀的人比你还努力,你有什么资格不去奋斗…… 那软件测试员,你究竟该如何规划下一份工作?路该怎么走?又该如何避免测试岗位的优胜劣汰?作为过来人,分享一下我的经验,写给对测试未来迷茫的测试从...  阅读全文
posted @ 2019-10-30 17:39 51testing 阅读(107) | 评论 (0) | 编辑 收藏
 
每个软件测试员最怕被问的问题:“测得怎么样了?”做测试太难了

作为一名软件测试员,工作有时候似乎挺苦逼的,我太难了……

说实话,我真想从上面去掉"似乎"两个字,软件测试人,就是苦逼!有的人曾抱怨过开发很糟糕,但我们没办法要求开发在会写代码的同时还要把代码写好,没有过多的bug,因为这就是我们的工作;有的人曾吐槽过自己的老板很较真,但我们没办法不接受领导们的批评指责,因为批评代表我们还有继续提升的价值……除了批评外,我想每个测试员都怕被无时无刻的刨根究底,无止无休的问长问短。

现在如果你问我做测试做了这么久最怕被问什么?我想一定是领导那句:测得怎么样了?!

回头想想,以前在公司做测试工作的时候,自认为不怕被老板批评,因为我一直都认为能被老板批评,其实说明老板还是对自己报有期望的,否则他有绝对权力可以不批评你,直接让你"走路"的,而且最重要的是,批评之后就有了改正的机会,可以提高自己了。

但即便如此,测试人员仍然有一些最怕被问的问题,例如:测得怎么样了?还有问题吗?什么时候能测试结束啊?如何对测试人员进行考核啊? ......

不知道各位测试同仁是如何看待这项问题的,我记得当时一听到这些问题我就头皮发麻,然后就胡乱的应付几下就了事了。今天我们就先来说一说第一个最怕被问到的问题:"测得怎么样了?"

首先我们先分析一下为什么管理层喜欢问这个问题,其实如果抛开测试的内容(这个问题就变成:干得怎么样了?),这个问题对于一个上级来询问下级的工作是最普通不过的了,但是如果加上测试两个字,你会发现这个问题几乎没有办法回答。

因为凡是有一点测试常识的人都会知道,测试是不可能有尽头的,无论你覆盖多么强,测试多么细致,一定会有没有测试到的"死角",这些其实都是客观存在的事实,谁也不可能改变。

对于"测得怎么样了?"这类问题若想回答的让领导满意,至少要做到以下三点:

1、首先我们作为测试人员要就测试工作的这个特点和管理层进行一定的沟通,先要让上级接受一个事实:测试无论如何都不可能做到"零缺陷"。

2、如果您的上级也同意这个客观存在的现实,那么接下来我们还必须说清楚另外一件事情,那就是我们虽然做不到零缺陷的测试,但是我们有责任要清楚地告知管理层我们测试过程中的"死角"有哪些?

3、清楚了"死角"之后,最后要分析这些测试死角可能带来的风险是什么?

以上这些内容分析清楚之后,只能说问题交代清楚了,但是这件事远远没有结束,如果要想比别人做测试更有成就,我们还要做以下几个方面的工作:

①针对分析出来的风险,要继续明确这些风险可能会对我们目前的项目造成的危害有哪些?

②如果发生了这些风险,相关的解决措施是什么?

③这些方案的实施造成的成本和时间的损耗是多少?......

蓦然回首,软件测试风风雨雨这5年,起初每天的工作只是鼠标点点点,别问我测试用例咋写,我还真不知道,闲的时候真的怀疑自己的存在价值。但那只是我以为,时间荏苒,工作越久越能体会测试才不是这么简单,只会点点鼠标,并不能走的长远,工资也渐渐的无法满足生活需求,恍然明白,对于一个测试员而言,自己没有一个很好的框架,完全跟着感觉走,根本写不出好的测试用例。

测试绝对不是一个人闷头干,避免不了与人打交道,其中与开发沟通交流的最多,倘若遇到好的开发,流程是这样的:你提出bug→开发找原因→开发找代码问题→开发修改;倘若遇到不好说话的开发,流程是这样的:你提出bug→开发不搭理你→雨我无瓜→讲一堆开发语言→继续不搭理你→你只能生闷气。

所以,为了与开发沟通方便,我开始学习编程语言,什么Python、Java……不求写出完美的代码,但求与开发缩小代沟,同时对于我日后软件测试的职业发展肯定会有帮助。

再继续我的测试生涯,忽然发现,测试这一行,总是千差万别,自己会的别人不会,而别人会的自己很多不会。记得有一次面试一家上市公司,面试官问我最擅长什么,我突然哑口无言,总不能说擅长学习吧,总不能说擅长上网搜索资料吧,总不能说擅长点点鼠标吧,总得有拿的出手的东西吧,总得有出类拔萃的技术吧!

快速理解业务→梳理项目需求→测试用例设计……这些都是作为一名测试员的基础要求,如果想更好的提高工作效率,会做自动化测试→性能测试→安全测试等真的很有必要,同样每项测试都离不开深入理解业务→整理定位测试需求→设计合理的测试用例→筛选合适的测试工作→掌握测试工具的使用→分析测试结果……

如果想要使用测试工具,总得会编写代码吧,单单只会录制回放,同行见同行,肯定会成为人家的笑柄,同样,分析结果也少不了代码的加持、硬件设备的了解以及数据库的使用……

总而言之,无论欠缺了哪一样,对于测试员而言都是给自己挖了一个坑,没有充分的证据,自然会被开发怼,没有足够的技能,当然会被领导批,唯有不断的提升自己,不断地学习学习,才能把坑填平,才能升职加薪拥有更好的职业发展。

如果能做到以上这些方面,你做测试就一定会让老板非常放心,即使出现了问题,大家也都提前有准备。那你一定也是老板最得力的左膀右臂。加油吧!同志们,为了我们更好的未来,一起积极来想办法解决这些难办的问题吧!

加官方微信:sy51testing 回复关键词“学习”领取限量软件测试学习资料哦~~

​

posted @ 2019-09-18 17:31 51testing 阅读(136) | 评论 (0) | 编辑 收藏
 
10道题教你使用python Django框架来实现web应用,值得收藏

1、django+python27+mysql的生产环境,想换成python3,请问需要哪些注意事项?生产环境数据不想被破坏,所以不敢轻易下手,希望大神指点一下?

关于python升级:

可以使用Python3自带工具2to3,将python2的代码转换为python3。少部分代码仍需手工转换。

升级python版本后,第三方包的版本需要升级。有的第三方包不支持python3。这个时候可以尝试使用2to3工具对第三包的python源代码进行转换,然后使用。这样存在一定风险。无法转换的,需要寻找替代包,应用服务器上对应的代码需要修改。

关于django升级:

django1.5开始支持python3。同时django1.11是支持python2的最后的版本。如果使用的django版本大于等于1.5,则django版本可以不升级。如果django版本低于1.5,则需要升级django版本。升级django版本后,新版本不兼容的老的API都需要修改。这个工作量比较大。

升级django版本后,为django服务的第三方包需要对应升级。建议django不要立即使用最新版本,以免第三方包还不支持最新的django版本。

关于mysql:

mysqldb不支持python3,需要使用mysqlclient做数据库API驱动。

django2.0只支持myslq5.5或者更高版本

一般性的版本升级注意事项。

代码和数据做好备份

python和django升级后,上线前需要充分测试。

2、刚学习django的nginx部署,一直不清楚处理高并发的原理,大神可以解释下么?

我简单说一下我的理解。

django WSGI是单线程的,就是说一个请求处理完了才能响应另一个请求。

uWSGI(C语言书写)+Django相比与单独使用Django,通过多进程,发挥多核的优势,支持的并发量更高。

the web client <-> the web server <-> the socket <-> uwsgi <-> Django

uwsgi服务器运行在django一侧。

uWSGI(C语言书写)+Django相比与单独使用Django,使用多进程,发挥多核的优势,支持的并发量更高。uWSGI中有master和worker进程。master进程根据配置创建相应数目的worker进程。一个worker进程被创建后,它会运行一个python解释器实例,然后在worker进程被销毁前一直使用。master将收到的http请求分配给worker处理。worker进程调用python脚本处理http请求。一个worker进程反复用于处理很多个HTTP请求。woker进程数应该大于CPU内核数。然后根据CPU利用率增加进程数目。

3、我现在系统需要一个功能,当一个任务到达某个状态时,如果24小时没有任何人操作,则自动切换到另一个状态,对每个用户是有不同的任务的,有点想百度外卖下单等待商家接单的那种,有什么可以方便django整合一起的框架吗?django-celery如何?

简单说一下我的考虑,供你参考。

用户下单后,用户订单信息写入数据库。商家接单后,修改数据库中用户订单状态。

关于定时器:考虑使用django-celery创建一个线程做异步处理,24小时后检查数据库中用户订单状态。如果仍然没有商家接单,则修改订单状态。但是这样可能线程太多,资源消耗太大。可以使用django-celery设置循环任务,比如每隔5分钟查询出数据库中已经超过24小时、但是仍然没有商家接单的订单,修改这些订单的状态。

4、要怎么样运行Django里的程序啊?出于比赛需要,要解释一个 Django框架里的软件,本人学java,没接触过 Python的框架?求入口在哪儿?怎么运行啊?

这个操作我的教程“Python Django带你构建Web应用”里有。

进入django项目根目录。python manage.py runserver运行内置的Web服务器。缺省提供服务的IP地址是127.0.0.1,端口是8000。

如果希望对外提供服务,可以修改为真实的IP地址,例如想要使用1.1.1.1:8080对外提供服务。则在settings.py修改ALLOWED_HOSTS的内容为ALLOWED_HOSTS = [‘1.1.1.1’,]。 d:\django\web> python manage.py runserver 1.1.1.1:8000运行内置的Web服务器。

5、想跟你请教个问题:能用django做旅游调查网站吗,通过调查班级同学的旅游意向,将信息存入数据库,然后进行简单的分析,得出最佳旅游地点,这种想法可行吗?

第一部分收集和存储信息的需求和django相关。这是一个简单的Web应用。使用表单获取同学们的旅游意向。因为数据量小,所以可以直接将数据存入SQLite数据库中。

第二部分数据分析和结果展示,不一定需要依赖于django。根据需要从数据库中提取信息进行分析。如果分析复杂,可以使用numpy、pandas进行分析,使用matploitlib展示分析结果。

6、本来是准备开发一个web应用,主要是网站和客户端(pda)访问,现在网站使用django很方便就完成了,那在客户端(pda)上面的想法是用webservice,也不知道可以直接使用django实现。能不能不用webservice,直接django搞定,希望能得到解决方案并普及一下知识?

可以使用Django REST framework来实现RESTful web service。

7、如何最高效的利用django进行快速开发?或者可以说django那些部分,可以帮助实现快速开发?

我觉得django开发快的原因在于:

首先是python,作为动态类型语言,使用灵活,开发速度快。

其次,和另外一个常用的python web框架flask对比。django提供的功能更全面。django是重量级框架。flask是轻量级框架,很多基本的功能都需要自己实现或者使用第三方组件,但是使用灵活。

django优点:内置功能完善、强大(比如表单、认证、权限控制、文件上传、测试、国际化、分页、序列化、会话、数据验证、异常处理)使用方便,很多功能都不需要程序员自己实现了,强大的ORM机制,强大的admin站点,url pattern灵活易用,APP可插拔,错误提示信息非常详细,官方文档完善。

django缺点:封装层次多,修改困难。想用喜欢的第三方组件来代替内置组件比较困难。django为了将表现和逻辑分离,所以DTL功能比较弱。

根据需求选择框架,快速开发选择django,深层次定制,选择flask。

8、我用终端创建django项目时 提示 django-admin: command not found ,但是运行Python 导入django又可以,这是哪里出错了 而且之前有创建成功过,能帮忙解答一下吗?

比如python安装目录是D:\Python36\,则安装django后,django-admin.exe在D:\Python36\Scripts\中。需要将D:\Python36\Scripts\;添加到系统变量Path中。

9、想问一下,一个分组查询,现在有一个"性别"字段,我想统计其中男女生各有多少人,想用分组查询的办法。但是找不到示例代码,求老师赐教?

类似查询每个用户写了多少篇blog

from django.db.models import Count

numbers = Blog.objects.values('username').annotate(blog_count=Count('username')).order_by()

等效于SQL语句:select username, count(*) from Blog group by username

得到的QuerySets numbers的值是:

<QuerySet [{'username': 'admin', 'blog_count': 2}, {'username': 'Tom', 'blog_count': 4}, {'username': 'Jack', 'blog_count': 2}]>

最后添加order_by()是因为model里面定义了class meta: ordering。

10、Django中的通用视图是个难点吗?今天搞了一天这个通用视图,我是一点没懂。网上也查不到详细的资料,求老师简单介绍一下~

django视图最常做的事情是根据url中传入的参数,从数据中获取数据。加载模板,然后返回渲染后的模板。django提供通用视图来实现这一常见流程。从而减少视图的代码量。

URLconf中参数的名字可能需要修改,比如DetailView通用视图要求使用参数"pk"来表示主键。

在继承了通用视图类的视图类中,只需要指定model和template_name,就可以完成基本的流程。

另外还要注意context变量要和template中对应。

django2.0的手册 2.6.2 Use generic views: Less code is better给出了一个基本的例子,你可以试一下这个例子。

11、我原来做一个项目:因为表没有关联,所以用的是非关系型数据库mongodb,项目开发环境用的是python+django,部署在ubuntu上。当时用了pymongo做python和mongodb的连接,用mongoengine做了django与mongodb的连接。

现在来了新的需求,表之间有关联,因此我准备添加一个mysql数据库。

请问老师,django展示网页的时候,能够同时展示mongodb中表的内容和mysql中表的内容吗?settings.py中应该如何配置数据库呢?

可以在同一个网页中同时显示Mongodb和mysql中的数据。Django中只需要把需要显示的内容通过context传递给template即可。不管context的内容来自哪种数据库。

在setting.py DATABASES中添加连接mysql所需的参数,例如:

'db2': {

  'ENGINE': 'django.db.backends.mysql',

  'NAME': 'blog',

  'USER': 'root',

  'PASSWORD': '123456',

  'HOST': '10.0.0.1',

  'PORT': '3306',

  }

可以设置数据库和app的映射关系

DATABASE_APPS_MAPPING = {

  'app1': 'db1',

  'app2': 'db2',

  }

也可以在查询或者修改数据库内容时,使用函数using()或者参数using来指定需要使用哪个数据库。

12、作为一名小白,我想问大神:都说python django学起来相对来说比较简单,从入门到学会大致需要多久的时间啊?也就是学习周期大概有多长?需要哪些基础呢?

如果了解MVC框架和http协议,又懂python,那学django比较快。否则的话时间就久一些。

13、我用django自动创建了后台需要的表,其中一张表A用来存需要展示的新闻内容,之前新闻内容是存在另外一张表B中(mysql的数据库编码之前是latin,后来改成utf8,A表B表全部都是utf8编码),我把B表内容导入A表,英文部分是正常,但是中文部分全部变成了问号,求解?

可能问题出在connection连接层上。需要将连接层的编码方式也修改为UTF-8

加官方微信:sy51testing 回复关键词“学习”领取限量软件测试学习资料哦~~


posted @ 2019-09-03 17:33 51testing 阅读(105) | 评论 (0) | 编辑 收藏
 
程序员必须知道机器学习与数据挖掘十大经典算法:PageRank算法篇

由于公司架构调整和业务方向的转变,我所在的项目组即将接手一个机器学习和数据挖掘的项目,为了后续更好地开展工作,也为了能提高自己的专业技能,我决定开始学习机器和数据挖掘方面的知识。

那么,问题就来了:到底应该从哪里开始学起呢?最开始我也买了一些机器学习相关的入门书籍,跟着听一些网络课程,但是我发现所有的课程都特别偏重理论,虽然机器学习、数据挖掘需要很强的理论基础才能做好,但是我个人更喜欢理论联系实际的学习方式,比如可以在了解某种基本原理的基础上,立刻用代码来实现它。

无意间从同事口中得知机器学习与数据挖掘的十大经典算法,我决定就从十大经典算法开始学习。

下面是我的学习路线:逐个掌握每种经典算法的算法思想、数学模型及Python代码实现,争取各个击破并融汇贯通。

好了,废话不多说了,我们先看第一种经典算法:PageRank算法。

一、PageRank算法的简介

PageRank算法即网页分级排名算法,它的提出者是谷歌的创始人之一拉里·佩奇(Larry Page),所以算法的名字就以Page命名。拉里·佩奇提出该算法时还是一名斯坦福大学的学生,(真是自古英雄出少年啊!)并且该算法曾在2001年9月获得美国国家专利。

PageRank算法是Google算法的重要内容之一,可以说它就是Google算法的降龙十八掌和倚天屠龙剑啊!

二、PageRank算法的核心思想

PageRank根据网站的外部链接和内部链接的数量和质量,衡量网站的价值。PageRank隐含的思想就是:每个到页面的链接都是对该页面的一次投票, 被链接的越多,就意味着被其他网站投票越多。一个网页所获得“投票”越多,说明这个网页越重要,它的被访问的概率越大,自然分级排名就越高,那么搜索结果它就越靠前。这就好比是一篇学术论文,论文被引用的次数越多,论文的影响因子越高,自然论文就越权威啦!

PageRank的核心思想归纳起来就两条:

1.如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高。

2.如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高。

三、PageRank算法的数学模型

1、相关概念

出链:网页A中附加了网页B的链接,用户浏览A时可以通过点击该链接进入网页B,此时我们称A出链B。

入链:上面通过点击网页A中B-Link进入B,表示由A入链B。如果用户自己在浏览器输入栏输入网页B的URL,然后进入B,表示用户通过输入URL入链B。

无出链:如果一个网页A中没有附加任何的URL,则称A无出链。

只对自己出链:如果一个网页A中没有附加任何其他页面的URL,只有附加自己的URL,则称A只对自己出链。

PR值:就是指一个网站被访问的概率,PR值越高,被访问的概率越高,自然排名就高。

2、简单数学模型(不带a的数学模型)

首先,我们对网络上的所有网页做一个抽象,每个网页代表一个节点,如果从网页A中附加了网页B的链接,则表示从节点A指点节点B的有向边。那么整个WEB就被抽象成一张有向图。现在我们假设世界上只有四个网页,它们之间关系如下图:

图 1

之前我们说过PageRank的思想就是,谁被引用的越多,谁的PR值越高。那么我们假设当用户停留在某个页面上时,他跳转到页面上任意一个链接的概率相同。

对任意一个网页我们用I(p)描述其重要性,称之为网页排序值(就是PR值)。假定网页Pj有Lj个链接,其中一个链接指向网页Pi,那么Pj将其重要性的1/Lj分给Pi,即Pi的网页重要性就是所有指向这个网页的其他网页所贡献的重要性之和。公式表示如下:

式中,Bi表示所有链接到Pi的网页集合。

为了方便数学分析,我们定义一个超链矩阵M[Mij]:

其中第i行j列的值Mij表示用户从页面j转到页面i的概率。

按照这个定义,图1的超链矩阵为

设初始时每个页面的rank值为1/N,这里就是1/4。按A—D顺序得到向量v:v=[1/4,1/4,1/4,1/4]

此时如果做矩阵乘法,使M*v就得到一个新的rank阵v’:M第一行分别是A、B、C和D转移到页面A的概率,而v的第一列分别是A、B、C和D当前的rank,因此用M的第一行乘以v的第一列,所得结果就是页面A最新rank的合理估计,故M*v的结果v’就分别代表A、B、C、D新rank值。

然后用M再乘以这个新的rank向量v’,又会产生一个rank向量。迭代这个过程,可以证明v最终会收敛,即v≈Mv,此时计算停止,最终得到的v’就是rankpage的排序结果:

V’=M*V----------(1)

3、复杂数学模型(带a的数学模型)

但是我们也注意到,要想上述迭代结果最终收敛,必须满足一个条件:图是强连通的,即从任意网页可以到达其他任意网页。假设我们把上面图中C到D的链接丢掉,C变成了一个终止点。再进行迭代,那么迭代的最终结果是v’=[0,0,0,0],显然算法失效了。除了终止点问题外,还有一个陷阱问题,即将图1中D到C的链接删除后,再加一条C指向C自身的链接。那么按上述迭代过程,最终v’=[0,0,1,0],此时算法也是失效的。

   图2 终止点问题

点击添加图片描述(最多60个字)

图3 陷阱问题

为了解决终止点问题和陷阱问题,我们需要对算法进行改进:假设用户在选择下一个跳转的页面时,选择当前页及当前页上的链接的概率为a,选择其他页面的概率为(1-a),选择其他页面中每个页面的概率都相同为1/n,则计算PR值的公式演变为:

v′=αMv+(1?α)(1/n)-----(2)

四、PageRank算法的Python实现

下面我们以图3为例,分别用代码实现公式(1)和公式(2)的排序结果:

import numpy as np

  M = [[0,1/2,0,1/2], [1/3,0,0,1/2], [1/3,1/2,1,0],[1/3,0,0,0]

  U = [1/4,1/4,1/4,1/4]

  U0 = np.array(U)

  U_past_none_alpha = []

  while True:

  U = np.dot(M,U)

  if str(U) == str(U_past_none_alpha):

  Break

  U_past_none_alpha = U

  print('公式1的结果:',U)

  U_past_has_alpha = []

  while True:

  U = 0.8*(np.dot(M,U))+0.2*U0

  if str(U) == str(U_past_has_alpha):

  Break

  U_past_has_alpha = U

  print('公式2的结果:',U)

输出结果如下:

C:\Users\1009\PycharmProjects\20190329\venv\Include\Include\Scripts\Python.exe C:/Users/1009/PycharmProjects/20190329/pagerank.py

公式1的结果:[0. 0. 1. 0.]

公式2的结果:[0.13172043 0.11917563 0.6639785 0.08512545]

Process finished with exit code 0

显然,公式(2)的结果更加科学准确!

五、后记:

PageRank算法就介绍到这里了,我的感觉就是按公式编码实现其实并不难,难的在于公式背后的数学逻辑思维。通过和做算法开发的同事交流,我才知道原来算法最最重要的就是思维,没有思维的算法就如同没有灵魂的躯体一样,完全不能适应复杂的现实场景的需求。谨以此文为开端,开始我的算法之旅,希望与广大测试同行一起进步!

加官方微信:sy51testing 回复关键词“学习”领取限量软件测试学习资料哦~~


posted @ 2019-08-30 17:29 51testing 阅读(97) | 评论 (0) | 编辑 收藏
 
BAT争抢的全栈测试工程师真的存在?一段10年软件测试大咖的访谈

1、最近在纠结于做测试开发的语言,请问一下用Java比较合适还是python比较合适?

这个问题一直是我们测试人员争论不休的话题之一,python好还是java好,我在上一次专家门诊时候有提到,我们去做测试开发,去做自动化测试,在这两种语言上本身是差不多的,没有特殊的偏好。

但是如果说我们切合今天的题目,目标是全栈测试工程师,那么我要说,由于开发人员更多的使用java,所以为了后续能更好的进行白盒测试、进行工具开发、进行jmeter等性能工具二次开发,选用java似乎是一个更好的选择。当然,代码结构本身是举一反三的,java学会了,python还会远么?

2、如何在一个没有安全测试的团队开展安全测试?

谈到从无到有,最重要的就是无的阶段。首先要让公司、开发部分认识到安全对于一个系统的价值,例如我们抓一个XSS漏洞,截获到用户的cookie;或者我们从服务器端日志分析出系统曾遭受了哪些安全攻击,并对此进行针对性建议。

将这些问题在部门会议、冲刺 (sprint) 计划会议等重要会议上提出,很快就可以被接受,因为当前安全问题的确是重大问题,如果你有这个能力,公司自然愿意放手让你去做。

其次再说安全团队的建设,其实和其他测试团队一样,我们需要不同技术能力、不同特色的人组成一支精锐部队,来应对安全难题。

大体上可以分为先验团队和监控团队。先验团队中包括系统安全架构设计(安全分析、策略设计)、安全用例设计、安全测试执行等角色;监控团队则更多对服务器日志、蜜罐日志、服务器状况进行监控。当然,小型团队中一人可兼任多职位。

综合以上几点,加上适当的安全技能培训、学习、深化,整个安全测试就可以逐步在项目中推行起来了。

3、如何开展安全测试工作,在哪个时间点开展效果好?

主要也是怎么由零出发,开始推行安全;至于开展的时间点,通常情况下安全测试的规划是在代码设计阶段后就介入,这有点类似于我们的功能测试,但是正是开始进行测试,则是在功能测试、自动化测试结束后,性能测试开始前进行。具体的原因呢,说起来可能还要蛮久的,我在51testing上有一个课程,Web安全攻防学习宝典,链接中试听部分就有一定的讲解。

4、安全测试用哪些测试工具?

工具方面嘛,分两个方面,手工测试工具主要包含burpsuite、websacrab、sqlmap等,当然不同工具会有不同场景的应用;自动化审计工具主要是appscan和webinspect。

5、安全测试要关注哪些方面?

这个问题有点大,从web安全的角度来说,我们重点关注bs架构下,通过客户端、网站能够利用的安全漏洞,主要包括绕过啊、验证机制漏洞啊、会话管理漏洞啊、sql注入、xss、csrf等等。

6、安全测试的原理是什么?

安全测试的原理这个就太大了。估计打上整整一页都没办法说清楚,所有安全漏洞按照具体的分类一一从原理、攻击手段、测试方法、防范措施进行分析。

7、为什么要做安全测试?

这个问题似乎放在第一个更好一点,安全问题在互联网时代的背景下越来越突出,影响也越来越大。举个例子,一个小小的sql注入会导致一家公司损失上亿的客户数据、几百亿的交易甚至更大的隐患,安全漏洞已经超过了我们功能方面问题,你想一下,如果一个网站的数据库、代码、资料的安全性都无法保证,那么被攻击者劫持后会产生多大的影响?所以安全问题的排查和安全测试也就势在必行了。

8、目前做的项目中web应用、ios和Android前端应用、主机和数据库都覆盖了,对web安全和前端应用安全较为全面。但是目前挖掘的不深,只能对一些简单的漏洞进行利用,同时缺乏代码能力,可能也快遇到瓶颈,请问专家,如何尽快提升?各个击破,可有相关的学习资料分享?

安全测试本身就是一个由浅入深的过程,从一个新手变成一个“老司机”,需要更多实践和摸索。想要成为一个出色的白帽子,代码能力也是必备的技能之一,也是初级中级安全测试工程师到高级安全专家的必须品。

建议你在全面了解所有漏洞原理、攻击手法的基础之上,再进一步研究其他论坛中关于安全漏洞的细节解析,同时提升自己的代码能力,多做一些代码的白盒审计,来发现更多问题~~

9、大神我现在主要负责公司的测试管理,手下有5个人。公司还是对测试不是很重视,但是我深知也是我们的团队技术不给力。目前我感觉自己最大的瓶颈就是不会一门编程。我想利用三四个月脱产学习一门编程语言,希望大侠能给建议。

首先来说,对测试不够重视这点在绝大多数公司都存在,如果想改变这种地位,只有真正体现出自己的专业度和能力。我比较喜欢说的一句话哈,叫做测试的最高境界是什么,是教开发人员写代码。

知易行难,一定要向着这个方向发展,这也是为什么我认为全栈测试工程师在未来会占据很重要的地位的原因,当你能看懂开发人员的代码甚至可以对代码里的问题作出正确回应、能够找出安全漏洞和性能瓶颈、能够写出一套属于自己的平台来实现测试自动化,那么你的能力自然不必说,也不会有人对测试不够重视了。

脱产学习有脱产的好处,也有其劣势,我一向认为“学而时习之”才是好方法,也就是边学还要边做,而且是真正有压力的做,自己练习的效果永远不及项目上的压力来的好。当然,这是我的意见哈~

10、我是负责功能测试的,我想慢慢学习性能测试,应该如何学习性能测试,希望能够给提点意见。

很多同学都是从功能向性能转型,也很多同学通过一款工具开始进行性能测试的探索。总结起来,可以这么简单归纳,了解相应协议、学习一些语言基础(LR主要是c,jmeter主要是java)、从vugen、controller、monitor三个维度学习工具使用、再深入分析高级应用、性能调优等。

11、本人从软件测试工程师转向安全测试,工作年限5年多,做安全测试已经2年多,如何向安全工程师转型?

其实所谓安全测试到安全工程师的转型有两方面,一是从安全的问题探索向漏洞的防御转型,从事后向事前,从后验到先验。二是从常见漏洞类型向各种0day漏洞的发展。其实说穿了还是从测试维度向QA、QC维度的变化~我的建议是从测试思路跳出来,多关注代码,关注逻辑,多做白盒,关注0day等~

12、做软件测试4年了,但是在郑州这个测试不流行的行业还是有点困难的,之前搞过自动化测试和QTP测试,但是目前的公司完全不需要,好迷茫求大神指点~

其实让我们努力去学习技术的方式呢,有两种:

一种是公司、企业或者行业内需求较多,为了更好的职业发展和薪水而奋斗;

二种是当我们的地理位置或者行业内需求较少,那么同样为了更好的职位发展而奋斗,更主要的是在当前环境下你可以自主去推行一些自动化、性能,由于地区的限制,反而可能会让你的推行不会遇到太多阻力,得到更多的实践机会。

加官方微信:sy51testing 备注“学习”领取限量软件测试学习资料哦~~


posted @ 2019-08-21 18:10 51testing 阅读(90) | 评论 (0) | 编辑 收藏
 
零基础如何入门Web性能测试?汇总15个常见问题,集中答疑一波

1、目前正在研究jmeter,请问初期做性能,应先从几点做起?

Jmeter和LR都是目前性能测试的首选工具,如果你有LR的学习背景,那么Jmeter上手会很快,重点理解线程和进程的概念,流程和LR是类似的。如果没有,从入门的角度我建议先了解常用网络协议和操作系统线程和进程的概念,Jmeter用java比较理想,可以考虑了解一些编程基础。PS:其实用Jmeter先学习接口测试会更好理解性能。

2、请问零基础,计算机硬件专职业转行到这个行业,需要准备哪些?

计算机硬件已经具备了基础的计算机知识,要转软件是相对容易的,可以考虑从如下维度准备:

1)先准备自己拿手的网络和操作系统部分,网络主要是应用层协议,为性能和接口测试做铺垫,操作系统主要是为了搭建测试环境

2)建议熟悉一种编程语言,java或者Python都是首选语言,不需要精通,至少要能够进行简单的脚本编写

3)找一本介绍全面的专业的软件测试书籍精读,一定是精读。

4)如果可能最好找项目练手,从功能测试开始

3、目前做接口测试,进阶的时候还是会茫然,希望您能给点建议,另外您在做管理的时候,对员工一般是持什么态度,或者说姿态呢?如何培养,如何相处,如何分配任务,控制项目进度,质量?

这问题好大,我挑些重点说:

1)接口测试实际上是协议的测试,建议你从网络协议入手,这样才能做好接口测试

2)至于测试管理工作我认为因人而异,有些人天生强势,但有些偏平和,最关键的还是自身实力,如果自己不够强,一句俗话叫做将熊熊一窝就是这个理,姿态不重要,实体才重要。

3)至于培养,相处,分配任务这些是管理细则,总的思路是用其所长补其所短,人无完人,而且大多数都会觉得自己比领导牛B,让每位员工发挥最大价值,有成就感比较重要。

4)控制项目进度和质量 这个是方法问题,有很多方法可以控制,例如:测试版本控制,缺陷分析等手段,可以参考一下软件工程,敏捷过程等方面的资料。希望对你有所帮助

4、用Loadrunner做压测,响应时间比实际要高很多,用LR做压测,平均响应时间几十秒钟,实际手动打开链接1秒不到,差距很大,请问有哪些原因会导致这个问题呢?

比如下图,vuser才十几个,响应时间就十几秒了,但是实际上的体验还是很快,如何解决?

初步猜测应该是响应时间的设置不当导致的,举例说明:你要录制登录脚本,并记录登录的响应时间,你在LR的脚本中插入了事务函数(注意是一组函数),结果得到的响应时间是5s,但实际登录你感觉不到1s,那么可能是你的函数位置不对,包含了输入用户名和密码的时间,也可能是你的响应时间函数内包含了思考时间。前者你需要调整事务的位置;后者你需要在run time setting中排除掉思考时间。供参考

5、请教一下怎么样去抓程序的页面元素啊? 像Selenium web那样 抓页面的元素?有什么好的工具或者方法?

如果只是想抓取页面元素,推荐Chrome Developer tools,在Elements下查看。如果是为了自动化测试,除了selenium也可以考虑QTP(ALM)

6、请问软件疲劳测试应该怎么做?

一般是做压力测试,压测依据项目和业务的不同都会有所差异,推荐三种,一种是4H峰值压力的80% ;一种是24H,压力量可以控制在60%70%,还有一种是7*24小时(有的是一直持续50%的压力,有的是按时间波动压力值进行测试)

7、对B/S系统做压力测试前需要做哪些准备?如何客观的去分析一个系统?压力测试工具以前只接触过 Loadrunner,所以打算用Loadrunner,不太熟,里面的需要做的系统指标的设置看起来很麻烦,不知怎么去分析系统。还有就是做压力测试前除了选择熟悉工具之外,我还需要做写什么呢?

你的问题很难一两句话说清楚,对于前期准备工作,只能谈谈我在性能测试项目中的拙见:

1)先对需求进行初步分析,确定哪些环节需要性能测试,也就是对于你们系统来说压力最大的点在哪里

2)看现有资源,提前做好环境的准备工作,最好测试环境和生产环境1:1(实在做不到也要尽量接近,这点很重要,不然你要做等比换算 )

3)看被测系统使用的协议以及操作系统和应用服务器等各类配置,选择匹配的测试工具(多数WEB系统LR是可以应对的)

4)看时间,大多数情况下性能测试的时间并不充裕,需要抓重点优先测试。

8、如何取舍Loadrunner和Jmeter?

全看心情,玩笑哈~~如果从学习入门的角度就看代码和网络基础,如果代码和网络基础还不错直接用Jmeter入门就好,反之用LR入门更好。如果从企业应用的角度就看哪种更合适,对被测系统支持的更好。

工具只是形式,理解性能测试的基本原理用什么工具都可以的。

9、对Java频繁GC怎么定位问题?

请尝试用profiler寻找内存异常,例如短时间过多的对象创建,或者较大的对象创建。

10、我想实现50个用户并发上班打卡签到,参数化、迭代已设,然后,在签到函数前面添加了集合点函数,运行结果发现,用户签到后返回的签到时间是一分钟一个,并没有在同一个时间点进行签到!请教这是为什么?如何解决?

先去掉集合点试试看呢?同时启动50个用户并行(不设置集合点也可以实现并发操作的),如果还是持续一分钟,那请你检查事务时间和思考时间,事务时间是需要你手动配置的,思考时间默认是启动状态,你可以在Runtime Setting中查看一下,有可能你最终得到的1分钟是整个脚本运行一次的时间或者是包含了思考时间的结果,不是同时打卡的时间。

11、请问电商秒杀产品是如何测试的?

和其他产品的测试没有太大区别,主要是对时间点的要求比较高,可以考虑在性能测试脚本中使用集合点函数实现同一秒钟的并发。

12、压力测试和性能测试一样吗?

分类方法各有不同,没有定论,普遍来讲性能测试是对这类测试的统称。我倾向于下面的分类方式

性能测试(狭义)——性能测试方法是在特定的运行环境下,通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。

基准测试——在一定的软件,硬件和网络环境下,模拟一定数量的用户运行一种或多种业务,将测试结果作为基线数据,供后续测试活动参考。

负载测试——通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预定指标或某种资源已经达到饱和状态。

压力测试——压力测试也称为强度测试,主要测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。PS:在极限值80%左右的情况下持续运行一段时间(2~4小时)

配置测试——配置测试方法通过对被测系统的软\硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。

可靠性测试——在系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。

并发测试——并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。

PS:分类其实不那么重要,在实际项目中往往都是混合应用的

13、Web性能测试除了并发登陆以外,还有哪些比较常见的测试场景?

场景取决于业务,例如你是电商网站,你肯定要测试同时下订单的情况? ?;如果你是医院挂号网站,你肯定要测试多人抢一个医生的号源;如果你是银行系统,要考虑多人同时取款吧?

14、一般网站压力多大百万用户?

这要看计算方式,理论值100万/天的业务访问量 拆分到每秒钟是非常少的;但这不符合实际情况。

如果系统已上线,直接取线上数据做参考即可,一天中的峰值有几个,峰值时段分布情况可以推算出并发用户量;

如果系统未上线,可以利用2/8原则,80%用户集中在20%的时段,推导出业务访问量

15、目前遇到一个问题,在一台配置为8g,i3的win7系统运行压力测试,并发总是上不去,总是在140左右就会出现异常,超时等问题,请问如何分析呢,是因为服务器还是电脑的问题?

服务器压力上不去可以从如下维度分析:

网络流量是否有限制、

数据库/应用服务器是否报了异常,如果有请查看一下日志;

查看操作系统的资源监控情况,CPU占用率如何,是否达到了100%

代码方面是否存在性能问题,可以在大并发访问的时候手动访问系统,看看业务上有无异常。

PS:性能瓶颈分析和定位需要一个积累的过程,要学会看一些基础指标,提升编码能力,理解软件架构。

加官方微信:sy51testing 回复关键词“学习”领取限量软件测试学习资料哦~~

posted @ 2019-08-20 17:43 51testing 阅读(82) | 评论 (0) | 编辑 收藏
 
仅列出标题
共55页: 1 2 3 4 5 6 7 8 9 Last