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

避免大量实现类bug的可行性办法:研发质量保证前置

摘要:在实际项目中,抛开产品需求的质量不说,但就研发质量保证而言,测试人员在测试阶段发现大量的实现类bug,每天拉着开发人员修bug;要么在临近上线的时候,发现了一个重大问题,导致修复验证时间不够,但又只能“硬着头皮”上线。解决这些问题的方法或许多种多样,但这里来聊聊如何使用研发质量保证前置来尽可能避开这些问题。


关键词:研发质量,质量保证前置,尽早暴露问题,上线风险

  背景

  在实际项目中,抛开产品需求的质量不说,但在研发质量保证上面,测试人员往往需要时不时的面对不少头痛的情况:

  开发团队来了一个新人,本来需求量不大,但测试人员在测试时发现连主流程都跑不通,无法走下去;

  这次有一个从零起步的大项目,涉及多个模块的交互,但QA在测试时发现,实现与需求不一致,不得不重新拉产品同学、开发同学重新对需求;

  需要要重构一个核心需求,结果由于排期紧张,导致提测后不仅改坏了很多老功能,新功能也各种不通;

  改动了一个各种交互场景十分复杂的业务,由于开发耗时,测试周期本来就被压缩了,外加上大部分场景模拟、测试很耗时,临到上线勉勉强强测完,虽然不是很有信心,但由于项目紧急只能硬着头皮上线了;

  要改一个与第三方业务交互十分复杂的业务,由于需要第三方配合才能100%覆盖场景,但由于环境问题、第三方人员时间问题导致测试被block住很久;

  无论这些问题你是都遇到过,还是遇到过其中的几个,这些问题可能都给上线质量带来了或多或少的影响,甚至直接带来了线上故障。这些问题都有一个共同的特征:大部分问题的暴露都集中到了测试阶段。这里抛开需求方面问题,就自己的项目经验,聊聊与实现相关的研发质量保证前置方面的心得与体会。

  什么是研发质量保证前置

  质量保证想必大家都不陌生了,就是通过各种手段保证产品保质保量上线,说白了就是线上尽量少出故障,最好不出故障。研发质量保证是指代码实现层面的质量了,研发质量对应的bug是实现类bug,换句话说是实现与需求不符合导致的bug了。而研发质量保证前置是指将实现类bug的暴露时间点提前。

  实现类bug的暴露阶段通常为:技术设计、技术评审、代码实现、提测时的冒烟测试、测试阶段、线上。研发质量保证前置就是让实现类bug的暴露更加提前,最好在技术设计阶段就发现。

研发质量保证前置的几种手段

  前面说过实现类bug暴露有不同的阶段,但就其中的技术设计而言,目前还是开发人员为绝对主导的阶段,而且极其依赖开发人员的经验,就目前接触的众多实际项目而言,测试人员直接参与技术设计的阶段的机会还比较少,因而技术设计质量这里暂时不做过多讨论了。下面就其余的几个阶段聊聊自己的一些经验,欢迎大家补充。

 一、在技术评审中确认各种场景的实现

  这里的技术评审推荐开发人员主导,测试人员参加的评审会。站在测试人员的角度,虽然评审会的具体形式不限,但应该达到如下的目的:

  业务需求中的各种场景都覆盖了

  涉及的原有业务都覆盖了

  各种异常场景处理符合需求或产品公共处理

  当然了,技术评审本身需要测试人员对产品业务、技术实现都非常熟悉,否则即使参与评审,恐怕效果也微乎其微了。这里为了让开发人员积极配合技术评审,可以考虑以下实践:

  将技术评审加入到项目流程中,具体形式可以依据项目大小而定;

  为了鼓励大家参与的积极性,不妨想些针对性的鼓励方法;

  每次评审,可以总结优化点、修改点 ,并做周知,让团队成员认可评审的价值所在;

 二、在代码实现阶段鼓励微服务测试

  众所周知,单元测试主要是为了从底层代码更快发现问题,尽量避免直接测试一个大的模块,这样排查问题会比较耗时。不记得有多少次,开发人员为了排查一个问题不得不打个断点,debug几次才能真正定位到问题代码了。出现此问题除了log日志不太全外,就是组装成模块的更小模块、方法缺少必要的关键单测了。当然了,实际项目大家对单元测试的态度往往是:尽管爱,但很难真正行动。就自己接触的众多项目而言,开发人员可能通过日志自检,或者就针对某一些方法简单跑下测试,把单元测试当成工作的团队还真没有接触过。于是乎,在实际项目中,通过和开发人员达成共识,在代码实现阶段,针对某个独立服务测试自检。

  适合微服务测试的业务大致有以下几个特点:

  业务除了API接口外,更底层实现是通过若干微服务搭建起来的

  涉及的微服务逻辑复杂,集成测试很难100%覆盖

  涉及的微服务频繁业务修改,并且需要独立上线

  微服务测试实现最好使用自动化。自己在实际的业务中,已经将微服务的测试完全通过自动化的手段实现,测试用例的维护由测试人员维护,在需要测试时,开发人员只需要点击一键执行,几分钟后就可以直接查看结果了。当然了,除了自动化手段外,如果某个服务不易100%自动化,可以结合自己的业务特点考虑有无辅助方案。

三、在提测时做好冒烟测试

  想必无论是开发人员,还是测试人员,在针对同一个测试用例执行结果时,往往都会有类似的体会:开发人员认真执行了没有发现问题,但测试人员随便试用两下却发现问题了。当然这排除掉开发人员,测试人员执行测试时的视角不同外,恐怕就是对同一个测试用例的执行步骤理解不一致了。

  这里有几个自己的一些实践经验:

  QA将核心主流程用例,指派给具体的开发人员执行;

  QA人员提供类似一键自测的自动化工具,供开发人员执行;

  复杂的需要创造场景的用例,QA辅助开发人员一起执行

  具体哪种方式,依据各自业务特点、需要而定,但要切记:不可把冒烟测试当做一种流程对待,执行是只是走个过场。

 四、在测试时快速发现问题

  快速发现问题是问题的暴露尽可能在测试周期前半段时间,避开诸如在测试周期快结束的1天突然发现了很多问题,导致bug 修复、回归验证的时间都不够了。因而,快速发现问题最核心的目标是尽可能早的暴露问题。

  要想让问题提前暴露,当然除了测试方案的完备性、人员经验等因素外,还可以从测试效率提升入手做些事情:

  自动化覆盖。这是效率提升常用的一种技术手段,只要自动化用例覆盖全面,外加上一键执行,问题几分钟可以暴露出来。

  提前准备好测试需要的“一切”。这里的“一切”,不仅仅包括测试数据、测试设备,还包括当存在与第三方交互时,需要对方做的一些事情,需要提前打好招呼,约定时间等等。力求达到不会因为前期准备不足而耽误测试执行。

  尽可能让更多人参与测试。看到这里,你可能会说: 测试除了测试人员外,还有其他人需要参与,更何况其他人也不想参与啊。对,确实有这方面的问题。但这里是说,质量保证涉及方方面面的事情,不是测试人员一个人的事情;而且测试人员也有经验、视角的局限性,很可能很明显的问题恰恰漏掉了。因而测试人员不妨引导团队其他人员 参与测试,比如让产品人员/开发人员参与主功能的验收,设计人员参与UI/UE校对等等。在自己实际的项目中,感受最深的一点是,团队人员的参与,可以以“小白用户”心态来看待产品,因而更能发现一些体验方面的问题,而这恰恰因为测试人员接触产品过多而容易漏掉的。

 写在最后

  研发质量的保证需要开发人员、测试人员齐心协力、共同努力,需要二者对质量保证都谨慎对待。有时在想,如果开发人员写的代码没有实现问题,那么测试人员的工作就可以大大减少了,少了问题排查、修复、验证的耗时,验证几遍就可以上线发布了。但这种显然在实际项目中不太可能实现了:越来越复杂的产品设计,产品迭代速度越来越快,产品需求量有增无减...

  认清了研发质量保证的各种阻碍之后,不妨摆正心态,认真做些事情,来把研发质量保证前置,以求尽可能减少产品发布风险吧!

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

posted @ 2019-04-25 18:46 51testing 阅读(66) | 评论 (0) | 编辑 收藏
 
软件测试与开发岗位对比,哪个更适合你?

通常二选一,最残酷。因为选择了一个就意味着必然要放弃另一个。那对于测试和开发,究竟你更适合哪一款呢?

其实要搞清楚怎么解决这个问题,最起码要先搞明白它们各自的工作职能是什么。


下面举个日常工作中常见的例子:

开发说,测试净找麻烦,客户跟本不可能像他们那样使用软件。

测试说,问题总是会在看似极端的条件下产生,用户总是会不经意触碰到看似极端的不可能出现的条件。

开发说,测试花在异常情况下的精力比测试主流程还多,不知道轻重缓急。

测试说,开发从来不考虑测试的感受,连测都不测就扔给我们。

开发说,我都测了,还要测试人员干什么。

测试说,这么明显的问题你们都不测一下,把我们测试当垃圾桶啊

……

上面的对话并不是争吵,只是表达出了软件测试与软件开发人员工作内容上的区别。简单来讲,软件开发人员就是在生产代码, 但有时也不可避免的会一同产生BUG。而测试人员主要的工作除了测试程序能否满足需求,还需要测试程序可能出现的BUG。

1、做软件测试需要掌握的技术有哪些?

1)编程语言

掌握至少一门开发语言,比如c、java、C#等,一门脚本语言,比如Tcl、python、Perl、Ruby、Shell中对于测试工程师未来更广的职业发展非常有帮助。

2)数据库知识,虽然并不是所有的测试工程师都需要掌握一门数据库,比如做移动互联网的,对数据库要求相对较低,但对于大部分大型项目,都会有数据库,所以掌握至少一门数据库,比如Oracle、DB2、Mysql等。

3)操作系统,比如Linux、Unix核心命令也非常重要。对于有些涉及到网络的,网络和通信知识,比如Tcp/IP协议也非常重要。另外数据结构、软件工程等其他计算机知识也最好也具备。

4)软件测试核心技术,掌握软件测试核心的方法论,具体包括软件测试需求分析与软件测试用例设计核心工程方法。

5)掌握主流的软件测试工具,比如性能测试工具LoadRunner,自动化工具典型代表QTP,测试管理工具QC、、开源测试管理工具Testlink、Bugzilla、Bugfree、Jira等。

6)掌握核心的研发流程,比如RUP,测试流程,比如双V模型,或者是现在流行的敏捷测试等,也是同样重要。方法是秘笈、工具是兵器、流程是套路。虽然测试好比武术,棍术好比黑盒测试,剑术好比白盒测试。不同的武术对知识结构要求是不一样。

7)行业知识与背景,这个对于有些行业而言,非计算机专业的人会有些相对的优势。

2、开发岗位要求

1)在软件项目经理的领导下,配合完成程序设计和开发。

2)按产品需求进行软件设计和编码实现,确保安全、质量和性能。

3)参与内部测试、部署、实施等工作。

4)分析并解决软件开发过程中的问题。

5)熟悉Java EE 技术,包括Servlet/JSP 、JDBC 、JMS 、Web Service 等,对各种开源的软件如Spring 、Struts 、hibernate/ibatis 、Tomcat 等有深入的了解。

6)熟悉css/xml 等网页技术,熟练Ajax (jquery 、mootools )、Javascript 技术。

7)熟悉Oracle 、Mysql 数据库。

8)熟悉面向对象编程,具有良好的编程风格、习惯;了解软件开发流程,熟悉MVC 模式;并有在MVC 模式下进行中大型web 开发的经验。

9)可以单独对已有的系统进行维护,工作认真细致负责,有良好的自学能力,独立思考能力,能够在短时间内学习并应用新技术。

10)积极热情、沟通能力强,有强烈的责任心,具有良好的团队合作精神和敬业精神。

11)能够承受工作压力,能在规定的时间内高效完成任务,具有良好的团队合作精神。

3、软件测试与开发的职业发展对比

软件测试:

软件测试的职业发展路线要广于软件开发。

在测试技术领域:可以从测试执行工程师、测试设计工程师、测试系统工程师、测试架构工程师、测试专家这个道路晋升,也可以走比如自动化测试、测试开发、性能测试、易用性测试、安全性测试等专项。

在管理的领域:可以从普通测试工程师,测试项目经理、测试主管、测试经理、测试总监、大部门测试总监等晋升。另外从外围IT职业,测试还可以走行业测试专家,比如金融领域测试专家,项目管理、软件测试咨询与培训等、软件质量保证(SQA)、软件销售、技术支持等只要是IT领域的职位都行。

软件开发:

软件开发的职业发展其实也比较广泛。

在开发技术领域:可以从软件编码、软件设计与架构、软件需求等领域晋升。也可以从普通开发工程师、开发项目经理、开发经理、开发总监或者研发总监等晋升。

可以转型来做测试:通过学习测试关键技术,来做测试领域的测试开发。但从外围IT职业,开发相比测试能走的相对还是要窄些,很难走行业专家,除非先走需求分析,最后走行业专家。

总结:

其实不管是测试还是开发,只要确定了目标和方向,相信你一定会找到出路。

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

posted @ 2019-04-23 17:42 51testing 阅读(103) | 评论 (0) | 编辑 收藏
 
我们分析了100个移动应用程序,发现了App崩溃的6个常见原因!

人们讨厌应用程序崩溃,尤其是是程序减速或卡死几秒钟这样的现象。根据Dimensional Research的一项调查,61%的用户希望程序在4秒内启动,而49%的用户希望在2秒内响应输入。 如果应用发生崩溃,冻结或报错等现象,53%的用户会将APP卸载。


无论您的对象是消费者还是企业,崩溃问题会令他们彻底失望。与一些移动开发人员进行了交谈,询问了他们遇到的最常见的崩溃问题有哪些,他们给出了常见的六种原因:

1.内存管理

我所问道的每个人都会谈到内存管理,大多数APP都会开启许多线程占用系统的内存。OpsClarity营销副总裁Sachin Agarwal表示,程序员在编写代码时好像在app中只有他们编写的应用一样,同时,他建议在编写程序时,要考虑使其称为为“应用生态系统中的好公民”。

内存问题并非对所有开发人员是一样的。Solstice Mobile业务开发副总裁Andrew Whiting说“在iOS中,您就可以利用Objective-C来处理大量内存问题,”。但是需要权衡利弊。“在Android上,你需要更深入的控制[内存],你可以让它完全按你想要的那样做,但这会增加复杂性。”

“在Java中遇到[运行]内存不足,我们发现通常它与加载大图像或处理位图等相关,”New Relic的高级软件工程经理Jonathan Karon表示。在移动SDK技术性能报告中并编制了常见的问题原因。“实际上有一些令人惊讶的数字看起来像Android上的链接器问题,无法找到类,或者有一个称为非分类链接的异常。” 另一方面,iOS应用程序经常受到NSInternalInconsistency异常的影响,这是因为当开发人员在一个地方更改数组或数据集合时,而其他东西正在读取那里的事物列表。

2.软件生命周期

迭代的应用程序开发过程及其版本频繁的发布,为最小化可行产品进入市场打开了大门,然后随着时间的推移改进它,现在这种做法非常流行。但由于对操作系统和第三方API的依赖性,使传统软件生命周期变的更为复杂。

“如果你看看最新Android更新的系统,应用程序崩溃的会很多,”Agarwal说。“操作系统本身不稳定或操作系统更新了,应用程序没有更新” 或者用户不下载新的版本,这些“你都无法控制,它说明了一个核心的开发过程。”

移动和云计算的发展增加了第三方服务及其相关API的使用,从而节省了时间并有助于将应用程序更快地推向市场,但他们有自己的一系列问题。

“许多库是都有共同的问题,”Whiting说。 “他们试图解决每个人的问题,而不是为任何人提供最佳解决方案。” 例如,给定的API可能对特定应用程序具有性能限制。

API也可能使用棘手的技术,比如iOS方法调整。当原始代码(如Apple的API)不可用时,开发人员在原始代码(如Apple的API)基础之上进行修改。“你可以称之为iOS应用程序开发的'黑暗艺术'之一,”在线旅行社Fareportal的移动主管Raman Bhatia说。“[但]如果您的应用程序代码以某种方式编写,则可能导致崩溃。”

API也可能引起其他问题。“API延迟,错误率,数据带宽, API的版本以及API请求的数量都可能由小问题印发大问题,”Agarwal说。然后是API本身,这就需要专门的工具来跟踪所有内容。

API也可能导致其他问题,如内存错误。 “如果你创造了其他的对象前已经从内存中移除的一个对象,会认为通常这是没有问题的,但需要注意的是你不知道后续创建的对象到底需不需要引用已经删除的对象”联合创始人和开发者Long Le说道“尤其是当你引入第三方框架时,就会出现问题。你永远无法确定他们正在清理什么以及他们正在创造什么。”

3.测试不充分

测试的需求是很明显的,但是需要获得足够的覆盖率,特别是对于大量的Android版本和设备,可能具有挑战性。虽然有模拟器,但在服务器上运行的软件性能限制可能会与真机不同。

例如,应用程序的一个线程读取数据库,同时第二个线程尝试修改这一个数据库,“这是一个时间问题,” Couchbase移动首席架构师Wayne Carter说。“如果他们没有在同一时刻发生碰撞,那么这个问题就不会出现,可以用日志描述来掩盖。” 模拟器通常就不会和真机一样。

在不同的设备上运行不同的系统是个可行的方案,但是这种方法比模拟器消费高。这就需要在预算和需求之间权衡

测试应结合行业标准和用户期望的基准测试,以确保开发人员和用户可接受的内容。测试也应该持续进行。监控性能并查找用户反馈,然后尽快解决问题。

4.网络管理

随着应用程序越来越依赖网络,无论是数据还是第三方服务,网络管理已成为一个麻烦的源头。

发生崩溃的最主要原因是当你正要获取数据、提交了一些东西等待恢复而APP发生响应或者挂起。运营副总裁Pravin Vazirani说道,可能开发人员使Wi-Fi连接功能非常完善,但用户在不好的网络区域时就会发生问题

处理网络问题的一个好方法是告知用户连接中断,并在可能的情况下提供执行可能感兴趣的其他操作的机会。如果人们了解超出应用程序控制范围的临时状况的原因,他们更有可能保持冷静,不会对软件感到恼火。

5.错误状况和异常处理

由于移动开发的复杂性,一些错误是不可避免的,无论是意外的API更改,避免先前检测的内存问题,还是网络连接状况,甚至只是在传输大型文件(如图像或视频)时降低数据传输的速度

在这种情况下,最好的方法是给与良好的错误和异常处理方式。比如用户输入错误的数据、本应提供数值的内容而提供文字到文本框内等,这样,应用程序就不会被意外尝试而报错。

在任何这些情况下,正确编码的应用程序都会注意到意外情况,并且在通知用户错误的同时,可以优雅地终止进程或活动。如果你能保持沟通渠道畅通,就会有更好的机会留住用户。

6.代码太多了

最好的建议是保持应用程序简单。找到特定用途的插件,使用插件并编写必要的代码。企业移动开发公司Lextech Global Services的高级系统工程师Felipe Laso-Marsetti说:“最好和最无错误的代码是不是你自己编写的代码。”

你能否真正的创建一个无错误的应用程序,特别是在第一轮?可能不是。但是,您可以关注这些故障源,并尽最大努力创建强大的异常处理机制。

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

posted @ 2019-04-22 17:38 51testing 阅读(91) | 评论 (0) | 编辑 收藏
 
史上最简单的技术解读,让老婆都能学会的50个IT术语!

作为一名计算机系的学生,会不会经常对自己职业的未来感到迷茫呢,那么就让我们了解一下吧!

在这个IT行业里,大部分人能找到自己适合的岗位,适合自己的工资,但部分人还是很迷茫,不知道自己适不适合这个行业,所以很害怕,当你看完下面这组数据,你就不会这么担心了。


从上面这个图中的数据可以看出,IT行业已经占据了市场的百分之35,可以说IT行业需求量特别大,而且每年的IT人才需求几乎达到2000万人数,这不仅是一个数字,更是说明了人才的稀缺,由此可以看出薪资也必定是“水涨船高”。我整理了最全的IT行业术语,这次全是超级实用纯干货,不收藏可不要后悔哦!


1、IT行业的一些专业术语的通俗理解(举例而已,切勿当真)

冷备份 

假设你是一位女性,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友好,又不是恋人。你随时可以甩了现任男友,另外一位马上就能补上。这是冷备份。

双机热备份 

假设你是一位女性,同时和两位男性在交往,两位都是你男朋友。并且他们还互不干涉,独立运行。这就是双机热备份。

云备份 

假设你是一位女性,有一位男朋友,你又付了钱给一家婚姻介绍所,让他帮你留意好的资源,一旦你和你这位男朋友分开,婚姻介绍所马上给你安排资源,你感情不间断运行,这是云备份。

负载均衡 

假设你是一位女性,你的需求太强烈以至于你的男友根本吃不消,于是呼你找了两个男朋友,一三五单号,二四六双号限行,从而减少一个男朋友所面临的压力,这叫负载均衡

故障切换 

假设你是一位女性,你想去逛街而你的男友A在打游戏不接电话,于是乎你把逛街的请求发给了替补男友B,从而保障服务不间断运行,这叫故障切换。

主从配置 

假设你是一位女性,你有很多需要男朋友完成的事情,于是乎你跟A逛街旅游吃饭不可描述,而B只能陪你逛街,不能拥有全部男朋友的权利,这叫主从配置 master-slave。

集群 

假设你是一位女性并且有多个男朋友,配合心跳检测与故障切换和负载均衡将会达到极致的体验,这叫集群LVS,注意,当需求单机可以处理的情况下不建议启用集群,会造成大量资源闲置,提高维护成本假设你是一位女性,你的需求越来越高导致一个男朋友集群已经处理不了了,于是乎你又新增了另外几个,这叫多集群,横行扩容,简称multi-cluster grid

纵向扩容 

假设你是一位女性,你的男朋友身体瘦弱从而无法满足需求,于是乎你买了很多大补产品帮你男朋友升级,从而提高单机容量,这叫纵向扩容,切记,纵向扩容的成本会越来越高而效果越来越不明显。

拒绝服务攻击 

假设你是一位女性,你的男朋友英俊潇洒风流倜傥财大气粗对你唯一,于是乎你遭到了女性B的敌视,B会以朋友名义在周末请求你男朋友修电脑,修冰箱,占用男朋友大量时间,造成男朋友无法为你服务,这叫拒绝服务攻击,简称DOS。

分布式拒绝服务攻击 

假设你是一位女性,你因男朋友被一位女性敌视,但是你男朋友的处理能力十分强大,处理速度已经高于她的请求速度,于是她雇佣了一票女性来轮流麻烦你的男朋友,这叫分布式拒绝服务攻击,简称DDOS。

访问控制 

假设你是一位女性,你发现男朋友总是在处理一些无关紧要的其它请求,于是呼你给男朋友了一个白名单,要求他只处理白名单内的请求,而拒绝其它身份不明的人的要求,这叫访问控制,也叫会话跟踪。

跨站点请求伪造 

假设你是一位女性,你发现采取上述措施以后男朋友的处理请求并没有减少很多,于是你经过调查发现,有人伪造你的微信头像 昵称来向你的男朋友发起请求,这叫跨站点请求伪造 简称CSRF。

跨站点脚本攻击 

假设你是一位女性,你收到了一份快递,于是你要求男朋友给你取快递,当你拿到快递以后发现有人给你邮寄了一封通篇辱骂的信件,这叫跨站点脚本攻击 简称XSS,请注意,对方完全可以给你邮寄微型窃听器来窃听你的隐私。

压力测试 

假设你是一位女性,你要求你的男朋友坚持十分钟,然后十五分钟继而二十分钟以测试你男朋友的极限在哪里,这叫压力测试压力测试的目的是查看男朋友是否可以处理需求从而决定是否启用男朋友集群或提升男朋友处理能力,不要对线上运行的男朋友做压力测试,可能会造成宕机的后果,会血本无归的。

云计算 

假设你是一位女性,你的男朋友太能折腾处处留情产生了天量的待处理信息,你和你的闺蜜们已经累趴也没赶上他创造的速度,于是你付费在知乎上找了20个小伙伴帮你一起分析,这叫云计算。

数据统计 

假设你是一位女性,在使用云计算后获得了大量整理好的男朋友数据,这些数据如:地点 活跃时间段 活跃次数 

如家 xxxx 123次 

汉庭 xxxx 45次 

…这叫数据统计。

数据挖掘 

假设你是一位女性,你在得到男朋友经常出没的地点后,根据酒店,敏感时间段等信息确定男朋友因该是出轨了,这叫数据挖掘。

容器 

假如你是一位女性,你的男朋友总该出去浪而各种出问题,于是乎你租了间屋子并准备好了所有需要的东西并告诉他,以后不用找酒店了,直接来我这屋子吧,什么都准备好了,这叫容器。

假如你是一位女性,你每天都要和男朋友打通一次接口,采集数据。

你的男朋友用来连接你和他的工具,叫做接口“机”,你采集到的数据叫做“流”数据。

你一天24小时不停地采,这叫实时数据采集。

你决定开发新的接口来和男朋友交流,这叫虚拟化。

你决定从不同的男友身上采集数据,你就是大数据中心。

有一天你决定生一个宝宝,这叫大数据应用。

宝宝生下来不知道是谁的,这叫大数据脱敏。

但是从宝宝外观来看,黑色皮肤金色头发,这叫数据融合跨域建模。

你决定把这个宝宝拿来展览收点门票,这叫大数据变现。

2、软件测试中的常见术语

黑盒测试 (Black box testing) ── 不考虑内部设计和代码,根据需求和功能进行测试。

白盒测试 (White box testing) ── 根据应用软件的代码的内部逻辑,按照代码的语句、分支、路径和条件进行测试。

功能测试 (functional testing) ── 对一个应用软件的功能模块进行黑盒测试。这种测试应当由测试人员进行。但这并不意味着程序员在推出软件之前不进行代码检查。(这一原则适用于所有的测试阶段。)

系统测试 ── 针对全部需求说明进行黑盒测试,包括系统中所有的部件。

回归测试 (regression testing) ── 每当软件经过了整理、修改、或者其环境发生变化,都重复进行测试。很难说需要进行多少次回归测试,特别是是到了开发周期的最后阶段。进行此种测试,特别适于使用自动测试工具。

压力测试 (stress testing) ── 经常可以与“负荷测试”或“性能测试”相互代替。这种测试是用来检查系统在下列条件下的情况:在非正常的巨大负荷下、某些动作和输入大量重复、输入大数、对数据库进行非常复杂的查询,等等。

性能测试 (performance testing) ── 经常可以与“压力测试”或“负荷测试”相互代替。理想的“性能测试”(也包括其他任何类型的测试) 都应在质量保障和测试计划的文档终予以规定。

可用性测试 (usability testing) ── 是专为“对用户友好”的特性进行测试。这是一种主观的感觉,取决于最终用户或顾客。可以进行用户会见、检查、对用户会议录像、或者使用其他技术。程序员和测试人员通常不参加可用性测试。

恢复测试 (recovery testing) ── 在系统崩溃、硬件故障、或者其他灾难发生之后,重新恢复系统的情况。

安全测试 (security testing) ── 测试系统在应付非授权的内部/外部访问、故意的损坏时的防护情况。这需要精密复杂的测试技术。

α测试 (alpha testing) ── 在开发一个应用软件即将完成时所进行的测试。此时还允许有较小的设计修改。通常由最终用户或其他人进行这种测试,而不是由程序员和测试人员来进行。

β测试 (beta testing) ── 当开发和测试已基本完成,需要在正式发行之前最后寻找毛病而进行的测试。通常由最终用户或其他人进行这种测试,而不是由程序员和测试人员来进行。

3、目前流行的编程语言

Java:Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。

C#:(C Sharp)是微软(Microsoft)为.NET Framework量身订做的程序语言,C#拥有C/C++的强大功能以及Visual Basic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。

Perl:一种脚本语言。

Python:是一种面向对象、直译式计算机程序设计语言

Ruby:一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言

C++:C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。它是一种使用非常广泛的计算机编程语言。

PHP:PHP是一种HTML内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。

JavaScript:是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

4、linux/unix有哪些的发行版本?

Suse Linux、Red HatLinux、Ubuntu Linux、Centos Linux、Debian Linux、Gentoo Linux、IBM Aix、Sun Solaris、HPUnix等

5、比较流行的数据库有哪些?

Oracle、SQL Server、IBM DB2、Sybase、MySQL、PostgreSQL等

在未来的趋势,IT行业的薪资应该会更高,互联网行业的占比会越来越多。加油吧,骚年们!不想在毕业后默默的拿着低工资?也许你们该爆发你们的荷尔蒙了,去用于尝试,去超越自己!

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

posted @ 2019-04-19 17:29 51testing 阅读(71) | 评论 (0) | 编辑 收藏
 
专为新手绘制的测试开发学习路线图,想高薪看这篇!

对于刚接触IT行业的朋友而言,我们印象中的测试和开发是相互独立的两个岗位,但随着社会的不断进步,IT行业的不断发展,又出现了一个岗位,而且它正在逐渐崛起,那就是测试开发。那你可能会问,测试开发究竟是一个什么样的岗位呢?就业情况和薪资待遇如何呢?

下面我就来为大家全面解析这个神秘而又多金的岗位……


1、什么是测试开发?

在一般的大公司里测试和开发的技术界限不是那么明显的,开发也要懂测试,测试也要懂开发。说白了,同时具备专业的测试技术和软件开发的能力,干着服务于开发与测试的工作,这就是测试开发。学好测试开发技术,静观IT世界风起云涌,笑看大数据、云计算、物联网、区块链时代风云变幻。

重点来了!!具备一定编程能力、精通功能和性能测试的测试开发工程师绝对是软件企业中的ⅥP!


2、测试开发薪资待遇

在每个不同的阶段,需要的技能自然也不一样,当然薪资待遇也会不一样。

不过可以很明确的告诉你,无论是哪个阶段,你具备该阶段必须具备的技能,都可以成为该阶段的头号玩家,你所期望的薪资离你自然不会远!

据统计,测试开发行业的平均薪资如下图:

行业平均薪资:¥22890

3、测试开发岗位的优势:

职业寿命长

工作压力适中

市场需求大

无性别歧视

4、测试开发工程师就业方向

和不少的互联网测试的候选人朋友聊天,发现在该行业职业寿命较长,发展空间较为广阔大概有以下几种路径:

1, 走管理路线,在技术基础夯实到一定程度时,抓住机遇从leader到经理到总监(其实目前公司真正设置测试总监的岗位并不多)

2, 走技术专家路线,有的同学从最早的测试转到测试开发,再到测试架构,无论是薪酬空间还是市场需求抑或是职业生命都有较大的改观

3, 完全脱离测试,转做研发或者产品,运营等,都是不错的路径,但是相对而言转研发的难度系数还是有的,需要对技术的不断钻研和付出,产品,运营相对容易些

4, 回家继承家族企业。。。。。。

总结为如下几个岗位:

测试组长

自动化测试工程师

高级软件测试工程师

测试开发工程师

性能测试工程师

软件测试工程师

5、测试开发工程师的目标

测试开发工程师的目标有两点:质量和效率。

质量是提升产品的覆盖度,以求得更高的质量;

效率是提升产品的测试效率,以求得更快的产品交付和发布上线。

为了达到以上两点,测试开发工程师会使用各类手段以达到以上目标,包括但不限于:

单元测试

接口测试

灰盒测试

专项性测试(性能、压力、内存、耗电、流量)

代码走查

代码重构

工具开发

自动化解决方案……等

所以,测试开发工程师是这样一类混合型人才:是一个编码能力很强的程序员,可以写功能代码;也是一个能力很强的测试者,可以测试任何产品,有能力管理他们自己的工作和工具。

6、测试开发工程师必掌握的技能




Web系统原理+开发入门(web测试必备前端技能)

Java语言(100% 纯代码实战)

Selenium自动化测试工具及框架(for java)

Python语言

Selenium自动化测试工具及框架(for python)

Appium移动自动化(移动端自动化必备)

JMeter性能测试及接口测试(web及移动APP通用技能)

总结:

虽然市场上,很多测试开发工程师,没有这里提到的各种水平,但是他们有一个特点,开发,代码基础特别扎实,甚至有些做过一两年开发。我强烈建议你按着这个学习路线进行学习,坚持学习,尽量到达测试开发的目标,如果达不到,你也会接近这个目标,你到时候的能力也会让大部分羡慕,相信自己,努力学习,坚持下去,不轻易放弃。

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

posted @ 2019-04-17 17:33 51testing 阅读(91) | 评论 (0) | 编辑 收藏
 
Python如何处理大数据?3个技巧效率提升攻略

如果你有个5、6 G 大小的文件,想把文件内容读出来做一些处理然后存到另外的文件去,你会使用什么进行处理呢?不用在线等,给几个错误示范:有人用multiprocessing 处理,但是效率非常低。于是,有人用python处理大文件还是会存在效率上的问题。因为效率只是和预期的时间有关,不会报错,报错代表程序本身出现问题了~


所以,为什么用python处理大文件总有效率问题?

如果工作需要,立刻处理一个大文件,你需要注意两点:

一、大型文件的读取效率

面对100w行的大型数据,经过测试各种文件读取方式,得出结论:

with open(filename,"rb") as f:

    for fLine in f:

        pass

方式最快,100w行全遍历2.7秒。基本满足中大型文件处理效率需求。如果rb改为r,慢6倍。但是此方式处理文件,fLine为bytes类型。但是python自行断行,仍旧能很好的以行为单位处理读取内容。

二、文本处理效率问题

这里举例ascii定长文件,因为这个也并不是分隔符文件,所以打算采用列表操作实现数据分割。但是问题是处理20w条数据,时间急剧上升到12s。本以为是byte.decode增加了时间。遂去除decode全程bytes处理。但是发现效率还是很差。

最后用最简单方式测试,首次运行,最简单方式也要7.5秒100w次。

查看文末二维码,获取分享的代码~

那么关于python处理大文件的技巧,从网络整理三点:列表、文件属性、字典三个点来看看。

1、列表处理

def fun(x):尽量选择集合、字典数据类型,千万不要选择列表,列表的查询速度会超级慢,同样的,在已经使用集合或字典的情况下,不要再转化成列表进行操作,比如:

values_count = 0

# 不要用这种的

if values in dict.values():

    values_count += 1

# 尽量用这种的

if keys,values in dict:

    values_count += 1

后者的速度会比前者快好多好多。

2、对于文件属性

如果遇到某个文件,其中有属性相同的,但又不能进行去重操作,没有办法使用集合或字典时,可以增加属性,比如将原数据重新映射出一列计数属性,让每一条属性具有唯一性,从而可以用字典或集合处理:

    return '(' + str(x) + ', 1)'

list(map(fun,[1,2,3]))

使用map函数将多个相同属性增加不同项。

3、对于字典

多使用iteritems()少使用items(),iteritems()返回迭代器:

>>> d = {'a':1,'b':2}

>>> for i in d.items() :

....    print i

('a',1)

('b',2)

>>> for k,v in d.iteritems() :

...    print k,v

('a',1)

('b',2)

字典的items函数返回的是键值对的元组的列表,而iteritems使用的是键值对的generator,items当使用时会调用整个列表 iteritems当使用时只会调用值。

除了以下5个python使用模块,你还有什么技巧解决大文件运行效率的问题吗?扫一扫来和我们一起交流,深入了解更多Python实用模块,快速提升工作效率~

1. 读写文件技术,今后会用到测试数据的参数化和测试报告写作功能中~

2. 数据处理技术,今后测试脚本的测试数据处理过程可以用到~

3. 数据统计分析技术,今后会在测试结果分析中用到

4. 图表展示技术,在今后的测试框架中相关测试报告会用到

5. 程序自动触发技术,可用于测试脚本程序的自动执行。

扫一扫二维码

备注“py”,获取完整运行代码

和小编一起交流学习吧!


posted @ 2019-04-16 17:35 51testing 阅读(100) | 评论 (0) | 编辑 收藏
 
当一个测试工程师准备找工作,需要准备什么?

三四月份,正是挺多公司开放招聘的时候,个人经历了一些大厂或小厂的面试也总结了一些信息,罗列一下权当抛砖引玉,希望能够稍微帮到一些准备或者正在找工作的朋友。


前期准备:

关于投简历

需要意识到:一旦开始投简历,就是正式的开始找工作期了,你可能在投简历之后,时刻都能收到公司的面试邀请和电面邀请。所以,在开始投简历之前,就应该做一些基本知识的准备,避免仓促的接到电面和面试,因为没有表现好错过了好公司的机会

面试的有些问题是需要临时突击背诵加强的,因为甚至日常工作涉及不到,涉及面也比较广,建议还是要提前做三到四个月的准备,如果是在职状态的话,这个时间其实并不是特别充裕,所以给自己做个计划时间表,选择一个开始投简历的合适时间。

设置个人的目标

确认自己的目标,自己有意向的公司以及可以接受的公司类型,针对性的做准备;不要海投,尤其对于已经工作一段时间的人,海投会导致你收到一些没有必要的电话。

当然目标也不一定是哪个具体的公司,所以要分析清楚自己的想法:关于薪资范围,工作强度、公司规模,行业方向,将来的职业发展等,这些也可以在面试过程中逐渐清晰,你可能在这些元素里需要接受一些东西放弃一些东西,要清楚完美的工作的是不存在的,大部分人里只能从自己能力范围里选择一个相对好的,当然能力越强,可选范围就越大

总结提炼自己的经历

你要审视一下自己的过去的工作,了解自己的优势在哪里,了解哪些是你对项目对公司做出的比较大的贡献,哪些项目值得一说,面试时有理有据说清楚自己的优势。

总结一下自己的工作优点,基于工作事实去诉说优点,更加使人可信。

裸辞or骑驴找马?

不到万不得已不建议裸辞,主要原因是对于你找的下一份工作有影响,从情绪上说,无工作状态下,人的焦虑感很容易增加,陷入自我怀疑,影响个人精神面貌进而影响面试状态,从而可能最后仓促定一个工作,另外,对于裸辞的人,谈薪的时候公司容易压价。

建议还是找准几个自己有意向的单位,集中几天请假面试,目前很多公司还是能够一下午走完全部面试流程的。

技术类准备

目前对于招测试来说,知识覆盖面比较广,以下做列举

建议在面试之前记一下,不要轻视这些基本理论,我之前看到一些人去面试,连基本的网络协议都答不上来,哪怕可能个人能力技术比较强,但是在这种题目上被减分实在没必要

1.网络基础知识

TCP/IP协议四个层次组成,以及每个层的常用协议

OSI七层模型

TCP协议三次握手

TCP协议四次挥手

TCP和UDP的区别

HTTP和HTTPS的区别

一次完整的HTTP请求过程(即浏览器输入url到看到网页过程会发生什么)

HTTP不同的状态码的代表意义

HTTP的请求方法有哪些,作用是什么

HTTP 请求方法GET 和 POST的区别

2、测试工具相关

以Charles为例

Charles的工作原理是什么

Charles如何抓Https网页,IOS需要特殊注意些什么

如何设置弱网(弱网速度具体设置值)

如何设置断点,修改接口数据

如何指定网络请求重定向到本地

3、常用ADB指令

adb devices 查看连接计算机的设备

adb install <apkfile> 安装apk

adb install -r<apkfile> 覆盖安装

adb install -s <apkfile>把apk安装到sd卡

adb uninstall <packagename> 卸载APK

adb uninstall -k <packagename> 卸载app但保留数据和缓存文件

adb logcat 查看log

adb logcat -c 清空日志

adb logcat *:E >D:\log.txt 输出到某文件

adb logcat ActivityManager:I *:s 查看应用包名

4、常用Linux指令

cd命令:切换到某个目录

ls命令:列出当前目录的所有文件、文件夹

pwd命令:列出当前目录的路径

cp命令:复制

mv命令:剪切

grep命令:管道

find命令:查找

rm命令:删除

ps命令:查看进程

kill命令:杀掉某个进程

cat命令:查看某文件

tar命令:打包

chmod命令:赋权限

chown命令:改变文件的所有者

vim命令:文本编辑

5、SQL

基本的增删改查语句,对于select语句考察多一些

子查询

多表联合查询(join on)

group by 与 having基于聚合函数的使用

去重,排序,模糊查询

MySQL中的join有几种有什么区别

延伸:索引和视图

列举几个常用的关系型数据库和非关系型数据库

(以上建议做题熟悉,leetcode或者搜索一些题目,面试考察方式一般也是面试官口述一个表,让搜索某种结果,所以要熟悉这种模式,而不是只是记忆语法)

6、移动端测试的基础知识

目前各个公司的测试工程师定义可能不一样,有的是全部涉及,有的是只做移动端,或者只是后台接口测试开发,如果个人发展方向以及找工作更多的是移动端测试方向,那么移动端的基础知识是必须要记的

安卓系统四层架构

安卓四大组件

什么是安卓activity,activity的生命周期

首页跳转某页面后返回到首页,activity经历了怎样的过程

APP发生crash测试需要怎么处理(区分IOS/Android)

你常见的发生crash的日志是什么

什么是安卓ANR,如何避免

安卓crash和ANR的区别

Android手机和IOS手机,系统有什么区别

App测试中ios和Android有哪些区别

7、场景测试题,给你一个登录/支付/列表等场景,如何测试

面试常驻问题,基本不管大厂小厂都会问这个问题,考察面试人的思维考虑广泛度,对于这个问题,每个测试人员可能都有自己思路和方法,回答的时候可以保证全面性的基础上体现自己分析问题解决问题的步骤,可以按照自己的想法,这里仅做列举

确认大前提:需求内容,需求背景,需求目标,对象用户,使用设备,使用环境

可大略概括为:功能,界面,性能,安全

1)基本的功能逻辑测试:等价类,边界值,数据类型,正常逻辑,异常逻辑,异常逻辑的良性提示,流程失败,各种场景,易用性等

2)设备兼容性:IOS Andriod,不同系统版本,不同屏幕

3)获取设备权限

4)网络环境:wifi/弱网/断网,以及这几种情况切换下,发起请求与缺省页面

5)FPS,正常情况下资源加载速度,打开速度

6)流量测试,和电量测试

7)cpu 和内存资源占用情况

8)负载测试、压力测试:程序的健壮性,并发量用户量比较大的时候是否会有崩溃之类的问题

9)安全测试:涉及安全性的数据不可以被挟持,攻击,密码不可明文存储

10)是否调用第三方,与第三方软件的协调配合

8、一门计算机编程语言

根据公司招聘要求,大部分公司会让手写算法题,但一般来说不会特别难,视工作经验而定。语言这方面可能理论性的东西可以短期记忆,但是真的能流畅的书写还是要系统性的学习,不管是书或者视频,基础还是要打好,然后刷一些算法题,而且对一个测试来说,精通一两门语言对于工作是很有益处的,如果不想一直点点点的话,还是多在前期打好语言基础

会一门脚本语言的话锦上添花

9、之前工作的工作内容

这里大致分成三个模块

1)你们公司的测试流程是什么

基本算是必问问题,可能各个公司会有一些流程简化,但是建议还是实际情况结合正统流程,丰富成更完整的测试流程

2)项目细节

会仔细询问简历上的项目,最好对项目了解到代码架构层面,经得起询问,同理,不要在简历上写自己不太熟悉的东西,如果写了就要做好准备会被问

3)你遇到的印象最深的bug,怎么解决的

可提前准备,这个问题不是说完了bug就完事了,绝大多说面试官会问你问题根源是什么,开发为什么会出这个问题,建议说到代码层面的问题

10软实力

由于测试工作的实际内容,各部门沟通比较常见,也经常会遇到冲突处理的情况,所以面试的时候很多面试官会考察面试者的沟通协调能力,事务处理能力,这个问题出现的频率很高,场景可能各不相同。比如,即将上线,产品临时加需求的情况;开发没有按期完成需求影响上线的情况,这些场景下问你需要怎么处理

这些问题其实没有准确的答案,其实如果有测试经验的同学可以直接结合自己经验,说出自己觉得合适的处理方案,可以提前自己做一个总结。

11、你需要向公司了解什么

一般面试官最后会给一些时间问你想要了解什么,如果你觉得已经到了可能会发offer的时候,就不要问一些虚的东西了

公司测试团队有多少人

测试的主要工作内容是什么(很重要)

公司的发展方向

上下班时间和加班情况

月薪和年终奖以及其他福利(hr谈薪期间)

掌握清楚这些,对后续可能的offer对比很有帮助

12、一些有用的参考APP

互联网求职:拉钩,boss直聘(ps,有内推途径优先走内推)

公司信息查询:看准网,天眼查,脉脉-职言区,牛客网(针对应届)

刷题:leetcode

信息检索:github

(对于大厂面试建议提前查下各网站得面试题和反馈,针对性面试)

以上是个人的一些总结,可能也有些不太全面,对于个人不太涉猎的比如UI自动化方面谈及不太多,所以权当基础性的参考。

找工作的过程必然是一个疲惫的过程,可能会经历很多否定和压力,以及焦虑,保持良好的心态,相信自己,在每次面试之后总结并且提升,就变得十分重要。反过来想,在找工作的过程中,求职者更能清晰的了解到现在的市场上对测试的要求是什么,对于自己将来的发展也十分有利,凡是经历过的,都不失为对自己的一种提升,希望还在找工作的朋友能够坚持下去。

最后,祝大家能拿到心仪的offer

Xmind



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

posted @ 2019-04-15 17:45 51testing 阅读(118) | 评论 (0) | 编辑 收藏
 
重磅!2019考试时间已出炉,软件测试工程师必备的证书之一!

近日51Testing负责ISTQB考务老师,正式收到了ISTQB基础级2018中文版大纲,9月起,实施2011版和2018版混合考试,12月起完全实施新版大纲


那么到底ISTQB 2018版基础级大纲,对于2011版大纲基础上做了哪些修改和更新?我们一起来看下:

• 侧重于增加有用的实践,以及知识与技能之间的平衡

• 更强调测试技术

• 减少关注测试管理,

• 更强调评审

• ISO/IEC/IEEE 29119代替IEEE 829标准作为参考

• ISO/IEC 25010代替ISO 9126作为参考

……

(详细的新老版对比资料,可添加微信:a51testing 领取)

与此同时,为了达到在全球范围内进行一致的教学和考核的目标,2018版基础级大纲提供了基础级培训课程所需要覆盖的详细内容:

总体教学目标,描述了基础级水平的目的;

列出了学生必须能记忆(recall)的术语;

各个知识领域的学习目标,描述需要达到的学习认知输出;

关键概念描述,包括来源参考,例如:已认可的文献或标准。

大家都很好奇,为什么要单独说下这个事情,我们一起来看下,结合51Testing参与这次翻译工作的老师的话,总结了3个关键信息点:

对比新老版大纲的内容,变更比例大约在30%左右

对于之前学过培训但是没考过的同学来说,在12月前考试,学过的内容尚可复用,重考要尽早

3)新版的考试难度会升级,对于概念理解强调准确性,通过难度会加大,有备考打算的尽早筹备;

距离正式实施已经没多长时间了,已经报名ISTQB的考生,注意啦!近期51Testing ISTQB考试安排&培训开班信息:


获取2011版及2018版ISTQB基础级详细大纲及考试安排、报考信息,可联系白薇@51testing:400-821-0951/18918179853 或者微信:a51testing


为什么要尽快考ISTQB?

作为软件测试国际权威认证,众多大公司都开始以此证书作为评定软件测试人员能力的依据,招聘需求也加入了持ISTQB证这一条,近两年越来越多的企业找到51Testing进行ISTQB合作,包括三星、腾讯、汇丰银行、宁德时代等等,涉及金融、IT互联网、电子通信、软件等领域。同时从51Testing培训出去的学员,许多都因持证而获得加薪。



51Testing ISTQB合作企业(部分)


南京质检院

LinkedIn

中国建设银行

上海地铁 

未来电视

施耐德

……

说到现在,你真的了解ISTQB吗?

关于ISTQB

ISTQB®(International Software Testing Qualifications Board)全称国际软件测试认证委员会,是国际知名的软件测试资质认证权威机构。是否拥有ISTQB证书,已成为HP、IBM、Oracle、华为、联想等国内外知名企业选拔测试人才的重要依据。作为ISTQB的合作伙伴和授权机构,51Testing可在全国范围内提供ISTQB认证和培训服务。

作为基于全球统一标准规范、统一术语大纲的培训及认证体系。ISTQB的分为三个级别:基础级/Foundation Level(CTFL) ,高级/Advanced Level(CTAL) ,专家级/Expert Level(CTEL)


posted @ 2019-04-12 17:32 51testing 阅读(117) | 评论 (0) | 编辑 收藏
 
如何系统地自学 Python?近5000人赞同了这个回答!

是否非常想学好Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?

幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。

Python的设计哲学之一就是简单易学,体现在两个方面:

1)语法简洁明了:相比于其它语言,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。

2)切入点很多:Python可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。


虽说python上手容易,但说到自学python必须有这么些前提:

1)知道程序设计语言是什么,本身有其他语言的基础,或者曾经自学成功过其他语言;

2)逻辑思维能力还是比较重要的,毕竟程序设计,重在设计,而非一群代码的堆砌;

3)能够坚持每天写上几十行代码甚至更多,不间断,不放弃,学习学习,自觉学成后需要的是大量的练习,练习可以是自己网上找的,也可以是自己跟着书本/课程视频模仿,思考,分析后的成果物。


基本能够做到以上3点中的2点,那么自学python应该问题不大,但是至于是否能够系统的自学python,还是需要根据python职业发展路径来看,下面就简单梳理下python入门到应用的路线:

1、python入门

这部分主要包含python基础的语法,数据类型,数据结构,面向对象的python程序设计; 这部分对于学习能力好的人士来说,问题不大,因为都是单一的技术点,跟着一些网上现成的资源,加上自己的每日代码演练,学会应该问题不大,当然如果要深入理解核心技术点的原理,机制等,需要查阅python官方文档及技术站点,甚至查看python源码,这就需要深入学习的能力了;所以在这一层面上,学会和学好,直接影响到下一步的学习情况。


2、确认方向

在python语言入门到熟悉之后,你就可以开始确定自己的方向,学python是为了做python开发,还是做python自动化测试。

开发有开发的路线:Python web开发,需要掌握各类python WEB 框架的使用,能够独立搭建一个小型站点是你学习到这一步的目标;

对于python测试方向主要包括:基于python的 UI WEB 测试,移动端测试,接口测试,性能测试,这里同样涉及到每个领域中的python 自动化框架,开源第三方库selenium , appium, locust等。

3、Python的科学计算库

到了这一步,我们还能基于以上的基础,进行拓展,对于学习能力突出的,编码能力,逻辑思维,设计能力出色的人士,完全可以考虑学习python的科学计算库,这是通往大数据,数据挖掘,数据分析的必经之路,当然也是能够让你薪水翻番的资本,这个阶段对于自身的能力要求很强,要学好着实不易。


4、Python AI方面的应用

再往后就是python AI 方面的应用了,机器学习,深度学习等人工智能相关的技术领域,这个领域涉及面很广,学有余力的人士可以先选择一个AI路线,比如图像识别,动作识别等带有目的性的去摸索学习。


5、深入阶段

这个阶段的你,对Python基础几乎了如指掌,可是Python对象的算法设计、爬虫工具设计以及上面说的Python应用的理解都相对底层。这时候你就不能停留在表面了,勇敢的拆开Python的黑盒子,深入到语言的内部,才能真正理解它的设计思路。

总结:

以上简单讲述了下python“系统”学习的路线,能不能自学还是凭借自身的能力,第一阶段,能力强的人自学应该问题不大,从第二阶段开始,就要看各自能力了,因为这个时候已经不是单一的东西,而是多元化技术的融合应用。

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

posted @ 2019-04-11 18:35 51testing 阅读(112) | 评论 (0) | 编辑 收藏
 
简单易学的测试攻略:JMeter测试Java请求示例

JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,大家可以到官网下载源代码和查看相关文档。

关于使用JMeter进行JDBC数据库测试、HTTP请求接口测试、结合Badboy录制功能进行网站性能测试等内容,网上的资料比较丰富,这里就暂时不做介绍了。更实用和灵活的场景,是实用我们自己编写的jar包进行测试,这也就是“Java请求”方式的测试。这里主要记录一下我在学习这种测试方式时遇到的一些问题,和总体流程,算作一个记录和小总结。


一、核心步骤

1.创建一个Java工程;

在eclipse里面新建一个工程:JavaForJMeter

2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;

ApacheJMeter_core.jar(必须)、ApacheJMeter_java.jar(必须)、avalon-framework-4.1.4.jar、jorphan.jar、logkit-2.0.jar,后台3个为本地调试需要用到的包文件。

创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;

构建待测试类,添加类Hello,代码如下:

package com.test.webservice;

public class Hello {

public String sayHello()

{

return "Hello";

}

public String sayHelloToPerson(String s)

{

if(s == null || s.equals(""))

s = "nobody";

return (new StringBuilder()).append("Hello ").append(s).toString();

}

public int sum(int a,int b)

{

return a+b;

}

}

public Arguments getDefaultParameters();设置可用参数及的默认值;

public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;

public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;

public void teardownTest(JavaSamplerContext arg0):测试结束时调用;

添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:

package com.test.webservice;

import org.apache.jmeter.config.Arguments;

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

import org.apache.jmeter.samplers.SampleResult;

import com.test.webservice.Hello;

public class perftest extends AbstractJavaSamplerClient {

private String a;

private String b;

/** Holds the result data (shown as Response Data in the Tree display). */

private String resultData;

// 这个方法是用来自定义java方法入参的。

// params.addArgument("num1","");表示入参名字叫num1,默认值为空。

//设置可用参数及的默认值;

public Arguments getDefaultParameters() {

Arguments params = new Arguments();

params.addArgument("num1", "");

params.addArgument("num2", "");

return params;

}

//每个线程测试前执行一次,做一些初始化工作;

public void setupTest(JavaSamplerContext arg0) {

}

//开始测试,从arg0参数可以获得参数值;

public SampleResult runTest(JavaSamplerContext arg0) {

a = arg0.getParameter("num1");

b = arg0.getParameter("num2");

SampleResult sr = new SampleResult();

     sr.setSampleLabel( "Java请求哦");

try {

sr.sampleStart();// jmeter 开始统计响应时间标记

Hello test = new Hello();

// 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。

resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer

.parseInt(b)));

if (resultData != null && resultData.length() > 0) {

sr.setResponseData("结果是:"+resultData, null);

sr.setDataType(SampleResult.TEXT);

}

// System.out.println(resultData);

sr.setSuccessful(true);

} catch (Throwable e) {

sr.setSuccessful(false);

e.printStackTrace();

} finally {

sr.sampleEnd();// jmeter 结束统计响应时间标记

}

return sr;

}

//测试结束时调用;

public void teardownTest(JavaSamplerContext arg0) {

// System.out.println(end);

// System.out.println("The cost is"+(end-start)/1000);

}

// main只是为了调试用,最后打jar包的时候注释掉。

/*

public static void main(String[] args)

{ // TODO Auto-generated method stub

Arguments params = new Arguments();

params.addArgument("num1", "1");//设置参数,并赋予默认值1

params.addArgument("num2", "2");//设置参数,并赋予默认值2

JavaSamplerContext arg0 = new JavaSamplerContext(params);

perftestbbb test = new perftestbbb();

test.setupTest(arg0);

test.runTest(arg0);

test.teardownTest(arg0);

}

*/

}

4.Export为Runnable Jar File:Hello.jar

5.将此Hello.jar包放入JMETER_HOME\lib\ext目录;

6.以管理员身份打开JMeter;

7.创建线程组、Java Request、查看结果树,进行测试;



总结:

这里有两点需要注意:

1. 如果你的jar依赖了其他第三方jar,需要将其一起放到lib/ext下,否则会出现ClassNotFound错误,这个问题也是困扰了我好久;

2. 如果在将jar放入lib/ext后,你还是无法找到你编写的类,且此时你是开着JMeter的,则需要重启一下JMeter。

以上就是使用JMeter的Java请求方式进行一个测试计划构建的全过程了,都是比较基础的方法,如果需要什么额外的功能还可以慢慢学习。虽然自己也有写多线程并发的客户端测试代码,并自己收集response time等,计算TPS,但显然使用JMeter的方式更加方便,因为你只需要按照单线程的方式去实现你的测试业务,也无需添加各种埋点收集数据。

综上,感觉JMeter还是很强大的,最近打算多学习一点,对以后写代码,自我测试性能也是很有帮助的,再配合jProfiler的使用,可以很好的保证Java代码的效率和性能。当然,工具只能“锦上添花”,最根本的还是需要我们自己可以编写出高质量的代码!

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

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