大家好,我是阿萨。 前两天学习了老张的《测试人员如何保持不断成长》。收获满满。本期文章总结下自己学习到的收获总结。除了老张的讲解内容,里面加了自己的一些思考和理解。
一. 测试人员职场成长路径是什么样的?
1. 职场成长路径
小白----高级测试工程师----专项测试负责人--测试经理(专项领域专家)---测试总监(测试架构师)
2.各个阶段要达到的目标是什么?
小白阶段:
打好基础。学习软件测试行业基础知识,掌握流程和方法论。
高级测试工程师:
安排做什么:明确定位。首先能很好的完成领导交代的工作。
我能做什么: 问题驱动。对自己的能力是一个全景图,了解自己的优势和劣势。
我要做什么:向前一步。目标驱动。通过给自己树立目标一步一步朝着自己的目标努力。
我想做什么;实现想法。克服困难,完成目标。确保目标达成。最终实现个人不断成长。
专项测试负责人:
责任,明确自己的主要职责。
压力。压力是因为实力和目标之间有差距,通过压力让自己不断成长。
犯错。再完成目标的过程中不断突破自己。不断试错。试错过程就是不断成长过程。
专项领域专家或者负责人;
明确团队定位
培养人员能力
提供成长环境
遇到事情带头冲锋
制定方向和方案
测试经理(测试专家)以及测试架构师
P序列: 一栈到底
M序列:利用资源,用合适的方式解决更大的问题
技术leader 是团队最好的工程师之一
技术Leader 是为团队服务,解决团队的问题
你当前到哪个阶段了?
二,工作中不断成长的真实案例。
老张用自己的真实经历分享了让自己快速成长的2件事情。
1. 性能测试
比如拿性能测试举例。老张这里给大家列了一个很好的专项测试流程。基本可以套到所有的专项测试流程上。

(本图来自老张的讲义)
一般专项测试可复用流程如下:
需求提出
需求分析
业务场景模型
环境搭建
工具选型
脚本开发调试
压测数据准备
压测执行、观察监控
问题分析, 瓶颈定位
性能优化验证
项目结项,压测报告
性能各个子流程需要处理的小任务有:
业务场景模型: 压测流量模型,压测数据模型
环境搭建:操作系统:Linux, 代码打包发布、Jenkins
工具选型:压测工具:Jmeter, 监控工具:Prometheus
压测数据准备: 铺底数据MQ、Redis,MySQL, 参数化数据
问题分析、瓶颈定位:链路追踪, cat、jaeger。 问题分析:arthas, JVM自带如Profiler
通过这一项专项测试,它其中涉及软件测试流程,软件测试技术,软件测试用例,软件测试报告,沟通协调等软件测试过程中用到的各方面技能。所以做好每一件工作中的事情,也是我们成长的阶梯。
2.自动化测试

(本图来自老张的讲义)
自动化测试中从打开网页到数据入库真实发生了什么?这个问题是一个非常常见的测试场景。但是实际工作中你会认真思考它背后的逻辑和技术原理吗?
这个问题包含的技术点和领域知识其实很多。比如CDN分发,这一个小点上,就有可能会有很多场景。比如全球化的软件交付情况下,如何确保交付的软件在全球网络环境下都可以正常工作呢?
在实际工作中多深挖技术细节让自己不断成长。
三,技术和业务,孰轻孰重?
随着最近几年,软件测试行业的发展,测试门槛越来越高。测开是必备技能,这时有些测开就有优越感,觉得做测开比做业务更有价值。但是真的做业务测试就没有优势了吗?NO,NO,NO。我们看看老张的讲解。
技术和业务的区别:
用户要什么----满足用户的预期
企业要什么----快速实现用户需求。所有技术不一定最新,用现成,成熟的技术,不一定要自研。
业务需求的本质是满足用户要什么。
技术的本质是要满足需求。
业务需求的完成离不开技术的支持。技术离不开需求的载体。需求依赖技术才可以满足用户期望。技术通过需求实现自己的价值。
所以2者其实是相辅相成的,都很重要。
回到本章的问题,复用老张的讲解。业务测试其实不是没有市场,相反更重要。但是业务测试也需要学习技术,不断提高业务测试效率。
四,工作中如何解决问题?
提出问题, 解决问题是个人不断进步最佳途径。
遇到问题,你的第一反应是什么?
遇到问题,首先考虑如何快速解决问题。
通过判断问题类型,寻找更熟悉的人、搜索案例(记录,猜测,验证),求助专业人士等方法去快速推进问题解决。
比如测试过程中遇到CDN分发问题。肯定是先解决问题是最重要的。如果测试人员说自己先搞懂CDN分发机制,估计黄花菜都凉了。
提问能力其实也很关键。提出一个好问题,其实问题已经解决了一半了。比如我们常用的5 WHY法找根因,如果第一个WHY就把大家带偏了,那问题自然不会很好的解决。
先学会提问,再培养解决问题的能力。
五,工作之外,如何保持个人快速成长?
思维转变,成长是一个状态和过程,而不是结果。
学习实践,快速学习试错、观察别人犯错,少走弯路。
获得反馈:描述问题现象---分析问题原因----寻找问题答案。
复盘总结:发生了什么,过程是什么,获得了什么?
分享输出:梳理思路--求同存异---志同道合---圈子很重要
以上是学习老张分享时,做得笔记。干货多多。对阿萨帮助很大。比如里面的,首先学习可快速变现技术。面向领导工作。遇到问题,快速解决问题才是王道。
这每一个知识点都需要好好琢磨,并且在工作中不断应用和实践来提升自己。
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为