1、面试中被问到:公司没有需求文档,你会如何开展测试?
属于开放式的情景性问题,求职者可以反问:项目背景如何?(包括但不限于项目周期、项目紧急程度、项目人员规模、以及自己的角色定位等)根据对方给出的答案来判定,这样就需要根据面试官提出的“需求”来设计不同的“场景用例”了,如果项目团队中只有我一个测试人员...如果项目属于赶工期的阶段...如果项目周期比较长...如果我们有运营团队...如果我们是在开发一款市场上已有的同类产品...
既可以在当前的情境下“覆盖”周全,也可以展现出自己的丰富经验与逻辑协调能力,但需要记住的是,每个解决方案的出发点都要结果导向 ,或直接或间接地对当前项目产生价值。
以下就是分解后的场景分析。
2、从0开始进入新项目,产品经理要身兼数职,没有完整的需求文档
既然是从0开始的,则项目立项时是有经过前期调研的,那么项目背景以及相关的调研资料可以在立项会议中获取到,先要明确背景及意义,才能始终不脱离核心。之后产品经理没有输出完整的需求文档, 但基本的流程图(常见的为泳道图)还是有的,可以根据流程图来分解出基本流及备用流,形成最初的冒烟测试用例(前期可以用思维导图),同时带着疑问听需求讲解,在产品经理讲解的过程中,不断把思维导图这棵树“壮大”,层层递进,并将相关联的功能点在会议上展开来,当然这种方式也有局限性,适合一些小型项目的开发过程
3、入职后接手一个中途开展的项目,公司只有系统用户操作手册
除了查看公司的系统用户操作手册外,也可以查看历史缺陷报告。一是可以利用操作手册可以自己动手快速熟悉目前系统的一个状态,包含了哪些功能;二是通过历史的缺陷报告 ,可以了解到现一个系统整体的质量,同时也可以看到目前公司在测试方面的规范,也是一个学习的过程。
4、项目团队中多数需求由产品经理口述,寻找关键人员
这一步至关重要,以上几个场景都属于自己寻找资料的过程 ,而项目中最重要的因素是人,所以可以找到直接上级,询问要了解需求需要找哪位同事(因有些公司属于开发外包,并没有内部的产品经理)可以随时提问。亲身经历,有些甲方的产品经理是异地办公,无法现场沟通,所以当形式为线上沟通时,一定要提前约定好每天的固定沟通时间,如果不是阻碍性的问题就先记录好,然后统一提问。除了产品经理 ,还可以找到项目经理或接触该项目比较久的同事,虚心请教。
------------------------------------------------------------------------------------
以上是几种比较常见的场景,归纳总结下:
1、尽可能多地寻找相关文档
如项目开发外包中签订的合同,一般合同中会针对要签订的项目中的基本背景和产品功能点有描述;其次是市场调研报告、用户操作手册、与甲方的会议纪要,如果有相关的需求讨论历史邮件,不妨也留意查阅,基本上初创团队并没有规范的项目管理流程,更别说需求管理流程了,但也并不妨碍能够做出成绩的人,积极主动地最大化地获取相关信息,然后内化成自己的一份“测试需求文档”,再进行外化。
2、寻找同行业竞品,可以查阅竞品分析报告
互联网上有很多同行业中知名产品的分析报告,如产品所在行业及市场分析情况以及产品体验与分析,产品策略、用户群体分析、产品结构及功能群分析、市场用户评价以及评分等等。当然,常见的分析报告有短视频类、AI、语音软件、电商APP 、以及教育方面的应用,可以从用户群分析出发。
3、探索性体验产品,快速了解主流程及功能点
接手半路的产品比较适用,探索性测试的方法可参考之前的推文。
4、用户体验调研
一般情况下,用户体验调研都由产品经理和运营团队一起做,线上或是线下,经常有定性地如用户访谈,定量方式如调查问卷,测试人员不需要全程参与 ,但可以通过近距离的与用户代表讨论产品时,了解用户的操作使用习惯,但如果公司有可用性测试安排的话,务必全程参加,不仅是基本功能的操作,很多用户也可以从非功能角度给出更多的建议。虽然不会直接影响到测试的工作,但可以在实际的场景中快速地了解到这是一个怎样的产品,用户群是谁。
5、通过各种讨论会议来快速获取
公司里经常会有需求讨论会议(包括与业务部门的讨论)、开发、设计讨论会议以及项目讨论会议等等,可以多参加,即使并没有形成书面的文档,也可以在讨论的过程中加深对产品的印象以及发现更多关联的因素,最重要的是要清楚某个功能点背后的业务逻辑和业务背景。可以更多地站在用户的角度思考问题。
6、积极主动,持续总结,目标导向
尽管测试人员并不需要像产品经理、运营人员或市场部要经常对外沟通,但项目内部的沟通也同样重要,与项目经理、与产品经理、与开发人员以及测试组成员,良好的沟通理解能力也对自己的工作效率产生极大的影响 ,同时对于新入职的人员,让同事看到积极主动的工作,大家自然也愿意支持。另外就是需要在学习研究产品的过程中不断地总结,形成测试需求,再不断地完善也可以方便其他新来的同事,对项目对产品的不断挖掘 ,最终也会不断提升自己的职场价值。更多软件测试学习方法可关注(知乎ID:M虫神)了解更多
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r