最近很多粉丝问我,小姐姐,现在大环境不景气,传统行业不好做了,想转行软件测试,想知道软件测试日常工作是咋样的?平常的工作内容是什么?
别急,今天跟大家细细说一下一个合格的软件测试工程师每天都要做什么工作。只有真正熟悉了才能做到有的放矢,不用盲目加班,摸鱼摸的也会更有底气啦
日常猫猫镇楼!

主要分为两个阶段测试的设计阶段跟测试执行阶段
我们的主要工作是要制定测试计划和测试大纲,编写测试用例。
制定测试计划分为以下这三步:
(1)对需求规格说明书的仔细研究,将要测试的产品分解成可独立测试的单元。
(2)为每一个测试单元确定采用的测试技术
(3)为测试的下一个阶段及其活动制定计划
制定计划包括两个部分:概要测试计划和详细测试计划。
2.制定测试大纲
测试大纲是软件测试的依据,包括测试项目、测试步骤和测试完成的标准,也就是说我们要从测试的角度对被测对象的功能和各种特性的细化和展开。
这样可以保证我们在测试执行阶段测试功能不被遗漏,也不被重复测试,从项目管理角度来说可以合理安排测试人员,使得软件测试不依赖个人。
3.编写测试用例
测试用例大家可以理解为你用于测试的数据,比如你要测试登陆这个功能,就可以把正确、不正确的密码,正确、不正确的用户名,交叉组合得到四组用例。
稍微学习过一些简单的软件测试的朋友可能会用等价类和边界值分析结合得到以下的用例:

仔细看看图里的用例,是不是感觉并不难想呢?所以其实软件测试这行的入门门槛真的不高,是转型互联网行业比较简单的一条路。
不过这些样例现在在我看来也只能打个及格分,一个真正优秀的软件测试人员,应该会从不同的角度来给出用例。
比如,安全测试角度:

性能测试角度:

兼容性角度:

要注意哦,测试的用例并不是越高越好,因为软件测试的用例是不可穷尽的,我们的测试都是有时间成本和经济成本的,所以如何兼顾缺陷风险和研发成本之间的平衡也是一门修炼术。
作者建议可以参考《阿里巴巴测试用例编写规范》进行用例设计,这样可以不漏测不多测。需要这份用例规范的可以私信我关键词“用例”免费获取哟


我们可以大致把测试执行过程分为三个时期:

2.初测期
通过单元测试,测试主要的功能和关键的执行路径,排除主要的障碍。
3.细测期
依据测试计划和测试大纲、测试用例,开展集成测试,逐一测试功能、特性、性能、用户界面、兼容性、可用性等。发现大量不同的性质、不同严重程度的错误和问题。
4.回归测试期
这时候经过细测期,系统已达到稳定,在一轮测试中发现的错误已十分有限,主要是通过确定测试、系统测试、验收测试来复查已知错误的纠正情况,确认未引发任何新的错误时,终结回归测试。
5.软件测试的模型
软件测试根据不同的测试对象以及测试项目的背景可采用不同的测试模型实施测试活动,常见的软件测试模型有:V模型、W模型、H模型、X模型、敏捷测试等。
1.V模型

如图所示,V模型中的过程从左到右,描述了基本的开发过程和测试行为。
V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
局限性主要是两点:
2.W模型

如图所示,W模型针对V模型无法体现“尽早地和不断地进行软件测试” 的原则的缺陷,增加软件各开发阶段应同步进行的测试。
相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。
它的局限性在于,依然和V模型一样都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整
3.H模型

如图所示,在H模型中, 软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。
真正满足了软件测试的尽早进行原则,并且可以根据被测物的不同而分层次进行测试。
4.X模型

如图所示,左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序,然后再对这些可执行程序进行测试。
己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。
在实际应用中我们也很少会严格套用模型,而是会在一个框架上做一些填充,根据项目特点和实用性在每个测试模型的优缺点中尽量达到各方面平衡,大家一定要好好理解这些模型,面试时谈到你的项目经验时,对模型选择和结合的考虑,如果阐述得好是一个非常出彩的亮点。
千万不要纸上谈兵,生搬硬套。注意跟自己的业务实际结合起来才能棒棒哒,2023加油呀!
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的: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
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
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/
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo