主要问题存在于:
1、测试点分析:逻辑性不强
对于整个页面功能划分不清晰;
不同测试点归类不清晰;
不能形成相对固定的套路,书写耗费大量时间...
2、测试用例:关于,要细致到什么程度,不太明确
对于UI效果等的检查也要写进初次测试的用例吗?
3、测试用例设计时是依据需求说明书还是系统?
流程规范的公司,一定是基于需求说明书(或原型图)来设计测试用例
进入项目的时间节点来看
项目初期介入,依据需求说明书
项目中后期介入,依据还是需求说明书
有可能在实际测试过程中,没有需求说明书,可以参考当前的系统,同时需要结合自身测试经验进行结果的甄别
项目维护阶段介入,依据需求说明书
有可能在实际测试过程中,没有需求说明书,可以参考当前的系统、用户手册、bug清单等
4、这个用例没啥问题 就是时间问题 没写完
测试数据:
注意测试数据的时效性(测试准备)
如注册时的手机号在第一次注册时是未注册的,第二次再注册时就变为已注册了,所以不是特定的数据场合下,我们可以省略这些测试数据。
标题与预期结果要明确
注意:如果需求中没有说明类似的错误提示消息,我们应该借助于其他同类型产品的处理方案或消息来设置用例的预期结果。
测试标题:
直接点明测试的目的
简明扼要,不要太冗长
比如异常类测试时,重点关注导致异常的条件即可,(其他正确参数可以放在预置条件里面、实际工作中约定的规则下可以不写其他正常的参数)
如果是正常类测试时,可以依据有效等价类的类别(如登录时,qq、手机号、邮箱等)来细分设计测试用例
标题一般来说不重复
优先级:
掌握状态迁移法的使用
掌握订单的状态测试
掌握流程图主要元素及画法
能够绘制tpshop下单及发货流程图
掌握tpshop业务流程测试用例的编写
概念:
基于系统中模块或节点之间的状态。来描绘状态与状态之间的关系,从而找到状态之间转化的路线设计测试用例的一种方法。
适用场景
需要针对复杂业务场景设计测试用例时
使用步骤:
找出系统所有的节点
绘制状态迁移图
绘制状态迁移树
找出状态之间的转换路径
案例分析——飞机售票系统
飞机售票系统:
(1)客户向航空公司打电话预定机票,此时机票信息处于【预定】状态。
(2)顾客支付了机票费用后,机票信息变为【已支付】状态。
(3)旅客当天到达机场,拿到机票后,机票信息变为【已出票】状态。
(4)登机检票后,机票信息变为【已使用】状态。
(5)在检票之前任何时间都可以取消自己的订票信息,取消后,订单信息处于【已取消】状态。
明确状态节点:【预定】、【已支付】、【已出票】、【已使用】、【已取消】
绘制状态迁移图
绘制状态迁移树
抽取测试路径设计用例
路径1:预定==》已支付==》已出票==》已使用 |
路径2:预定==》已取消 |
路径3:预定==》已支付==》已取消 |
路径4:预定==》已支付==》已出票==》已取消 |
需求说明:
1.用户在网站完成下单后,订单状态为“等待付款”
2.用户完成付款后,订单状态变为“待发货”
3.管理员对订单进行确认并发货后,订单状态变为“待收货”
4.用户收到商品后,在系统中进行确认收货,订单状态变为“待评价”
5.用户使用商品后,对商品进行评价,评价提交后,订单状态变为“已完成”
6.商品发货前,用户可以对订单进行取消操作,取消后订单状态变为“已取消”
7.用户付款前,管理员可以认定订单无效,此时订单处于“已作废”状态
找出流程节点与状态
【等待付款】、【待发货】、【待收货】、【待评价】、【已完成】、【已取消】、【已作废】
绘制状态迁移图
绘制状态迁移树
找到状态之间转换的所有路径
路径1:【等待付款】==》【待发货】==》【待收货】==》【待评价】==》【已完成】
路径2:【等待付款】==》【已作废】
路径3:【等待付款】==》【已取消】
路径4:【等待付款】==》【待发货】==》【已取消】
流程图:
流程图是对过程、算法、流程的一种图像表示,在技术设计、交流及商业简报等领域有广泛的应用。
通常用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。用图形表示算法,直观形象,易于理解。有时候也被称之为输入-输出图。
椭圆:开始/结束
箭头:路径,流程的走向
平行四边形:数据的输入/输出
长方形:处理/步骤/过程
菱形:判定/判断
绘制原则:
不要漏掉流程路径
现有判断,再有判断结果
推荐讲主业务流程放在最中间,便于阅读
案例1:ATM取款流程
案例2:缺陷管理流程
业务流程测试的关注点:
关注点在核心业务是否能够跑通
重点不是关注单个功能模块的细节点
业务流程测试的价值:
客户角度:对客户最有价值的是业务的实现,不是单功能模块的质量
测试人员角度:分配任务往往是针对功能模块划分,业务流程的测试容易遗漏
进行业务流程测试的时机
上线前进行业务流程测试的确认
单功能模块基本可用的情况下,尽早进行(冒烟测试)
需求分析,明确流程
画出流程图
编写测试用例,一条路径对应一条测试用例
路径比较多时,可以对所测业务路径设置优先级
熟悉项目阶段,画出组织架构图,展现工作成果
进入项目,进行一段时间的测试之后,画出项目的业务流程图
体现个人对项目业务的深入理解
业务流程图可以作为整个团队的知识积累
前台下单
后台发货
掌握状态迁移法的使用
掌握订单的状态测试
掌握流程图主要元素及画法
能够绘制tpshop下单及发货流程图
掌握tpshop业务流程测试用例的编写
1.用xmind梳理今日知识点。
2.绘制tpshop业务流程图,完成业务流程用例设计与执行、并提交缺陷。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在编写一个包含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
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
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您
我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element