它是一个逻辑产品,没有实体,包括程序,文档和数据,需要通过终端设备才能体现出来功能和作用
客户需求
产品需求
需求规格
项目计划
版本计划
技术选型报告
竞争对手调研报告
概要设计
详细设计
测试计划
测试方案
测试用例
测试报告
缺陷跟踪单
产品经理(PM):需求调研,客户对接,输出需求文档
项目经理(PM):项目计划,进度把控,重大事件决策,人员调度,风险管理,协调团队
架构师(FD): 技术选型,技术专家,关键模块实现
程序员(FG):设计,编码,修复bug
测试工程师(TE): 找出软件中存在的bug并提交
软件产品从最初的构思到最后的版本发行的过程
瀑布模型,敏捷开发模型,V模型,W模型,X模型,H模型,螺旋模型
1,瀑布模型的流程:项目计划-需求分析-软件计划-程序开发-软件测试-集成维护

2, V模型

3, W模型

4,敏捷迭代模型
站会(晨会):
三个问题: 昨天做了什么、今天要做什么、遇到了什么问题 时间控制在15分钟内
不需要实际去解决问题(会后的事情)
产品负责人(PO): 指定产品发布日期和内容,有权接受或拒绝开发成果
流程管理员(SM): 负责整个开发过程的流程管理,打通开发和客户之间的沟通壁障
开发团队(ST): 根据规定流程完成开发工作,不同人负责不同的技术实现、工作方式不拘于形式,只要能完成目标即可.
需求-设计-编码-测试-维护-升级-废弃
六大特性:功能性,可靠性,易用性,效率,维护性,可移植性
(1) 功能性: 功能性是指当软件在指定条件下使用,软件产品满足明确和隐含要求功能的能力
(2) 可靠性:在规定的时间下,规定的条件下完成规定功能的能力
(3) 易用性:易理解,易学习,易使用,吸引用户
(4)效率性:对于资源利用情况,软件提供适当的性能的能力
(5)维护性:四规定,在规定条件下、规定时间内、使用规定方法或工具修复规定功能的能力
(6)可移植性:从一种环境迁移到另一种环境的能力
(1) QA:主要从事事先的质量保证活动,以预防为主,减少降低错误的发生的几率
(2) QC:主要从事事后的质量检查活动,期望发现并报告问题
(3) QA偏向与质量管理体系和维护,质量培训,认证体系审核,QC便向与质量检测和控制
(4) QA的工作涉及全流程所有部门,范围较广,QC主要集中在质量检验这一方面
(1)分为五个等级
(2)PA:过程域(一类实践的集合)
(3)Goal:目标
(4)Practice:实践
为了通过软件测试,尽可能减少bug,保证软件质量
为了发现软件中的缺陷而执行程序或系统的过程
以最少的人力物力发现软件中的缺陷和潜在的问题,满足客户的需求
软件测试的原则程序,文档,数据(不同阶段,测试对象也会不同,eg: 需求阶段测试, 测试对象就是需求文档)
软件测试分类的划分标准集成测试IT(Integration Testing) 系统集成测试SIT(System Integration Testing)自顶向下---从顶层模块向下层模块集成
自底向上---从底层模块向上层模块集成
将已经集成好的系统与硬件环境,网络和其他元素整合到一起进行一系列的组装和确认
是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统分析和设计中的错误。如安全测试是测试安全措施是否完善,能不能保证系统不受非法侵入。再例如,压力测试是测试系统在正常数据量以及超负荷量(如多个用户同时存取) 等情况下是否还能正常地工作。
功能测试、安全性测试、配置测试、易用性测试、安装测试、文档测试、稳定性测试、可靠性测试、兼容性测试、性能测试、压力测试、容量测试、负载测试、并发测试、高可用测
在已经完成单元,集成和系统测试之后进行的测试主要是为了确保软件的功能是否满足合同和客户需求文档所提的要求
测试类型:黑盒测试(验收测试)
验收测试分类:
非正式验收: α测试,β测试正式验收:按照完整测试流程进行测试(测试计划、测试方案、用例选择、测试报告,以及其他所有的中间过程文档)把一个程序看成一个透明的盒子,主要对程序本身进行测试,包括内部结构,数据和逻辑
白盒测试用例的设计方法:
逻辑覆盖(语句覆盖,条件覆盖,判定覆盖,条件/判定覆盖,条件组合覆盖)路径覆盖黑盒测试B B T(Black Box Testing)也叫功能测, 据驱动测试, 是站在用户的角度,主要关注的是软件的功能和性能是都满足需求
用例设计方法:
等价类划分法
边界值分析
场景法
错误推测法
判定表驱动
因果图法
正交实验法
灰盒测试 G B T(Gray Box Testing)灰盒测试介于白盒与黑盒测试之间,以接口测试为主,主要关注接口的输入输出测试,应用在集成测试阶段
兼容测试C T(Compatibility Testing)包括三类兼容:
硬件兼容:设备(同一品牌得不同机型,不同品牌)
软件兼容:操作系统(不同的操作系统,同一系统操作系统的不同版本),浏览器(不同品牌,同一品牌的不同版本),数据库,分辨率,网络环境,应用软件之间的兼容
数据兼容: 产品的不同版本之间的数据兼容,不同软件之间的数据兼容
WEB兼容性测试的侧重点:
操作系统兼容性测试
浏览器兼容性测试
分辨率兼容性测试
C/S兼容性测试的侧重点:
APP测试专项测试:安装测试(覆盖安装,),卸载测试(清除数据,不清除数据),事件交叉(切换到其他引用然后再切回来),网络环境(移动玩络,无网络,WiFi网络,弱网),终端设备(手机型号,屏幕尺寸,分辨率,操作系统,系统版本),升级测试,降级测试,耗电量,手机发热量
回归测试(Regression Testing)bug修复完成后进行的测试,主要检验bug是否修复完成, 有没有引起其他问题
回归策略: 全量回归、基于风险的回归、只回归修改部分
冒烟测试(Build Verification Testing)开发提测后,首先要进行的测试,主要测试系统主流程、基本功能、核心功能是否能正常使用
随机测试(Monkey测试 Ad_hoctesting)通过adb monkey 生成随机事件,发送到移动设备中,模拟随机操作,主要针对Andriod端的app测试
很好奇,就使用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