一、软件生命周期
1、瀑布型生命周期模型
自相而下,相互衔接
1)问题的定义及规划
定义:确定软件的开发目的及其可行性。制定项目总体开发计划。(发现问题并规划)
人员:【产品经理】,运营,开发老大,需求分析师,老板,项目经理等
输出:需求说明文档/原型图/PRD
2)需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析,明确客户的需求,输出需求规格说明书最终版(原型图),提交评审。
人员:产品经理,开发人员,测试人员,UI设计(不是所有的人)
形式:会议
测试尽早介入的目的:1)了解需求,方便测试;2)提高用户体验度
3)设计
把需求分析得到的结果转换为软件结构和数据结构,形成系统架构。
概要设计:主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务。
详细设计:对概要设计中描述的各模块进行深入分析等。其中需要包含数据设计说明。
人员:程序员
输出:概要设计和详细设计
4)编码
按照详细设计好的模块功能表,编程人员编写出计算机可运行的程序代码
5)软件测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。测试方法主要有白盒测试和黑盒测试。建立详细的测试计划并严格按照计划进行。
单元测试:主要是测试程序代码,为的是确保各单元模块被正确的编译-----一般是开发来完成。
集成测试:单元测试后,将各单元组合成完整的体系,测试软件各单位之间的接口是否正确、数据能否正常传。-----比如说注册和充值这两个功能是否能够连通
系统测试:把软件系统搭建起来,按照软件规格说明书中的要求,测试软件其性能等是否和用户需求相符合,在系统中运行是否存在等等。—根据测试用例,进行完整的系统测试
验收测试:主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到符合效果的。----用户对软件进行验收
6)运行维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的需求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护主要包括纠错性维护和改进性维护两个方面。
人员:运维
上线,版本迭代,bug修复
2、V模型生命周期模型
RAD:通过开发和测试同时进行的方式来缩短开发周期,提高开发效率
敏捷开发模型(产品需求-开发-测试)
二、软件测试流程
1、测试工作会遇到哪些人?
开发,产品经理,UI设计,客户,技术支持/实施/销售
2、测试各阶段的职责
1)测试设计阶段
测试用例设计:参照需求说明文档/原型图写出测试用例
测试用例评审:与需求不一致,修正。需求变更,修改。
人员:产品经理,开发人员,测试组长
2)测试执行阶段
执行测试用例
3)区分开发环境、测试环境、正式环境、准生产环境
开发环境:1)进行单元测试;2)代码的调试
测试环境:1)单元测试;2)集成测试;3)系统测试;4)正式验收测试;5)Alpha测试
正式环境:上线后,用户使用
准生产环境:模拟生产环境
在测试环境后台添加的数据和信息,不能够在生产环境看到。因为每个环境都是独立的,不同的服务器和数据库
3、软件测试的基本流程(重点)
1)测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议。
2)测试计划阶段:主要任务是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度的安排,人力物力的分配,整体测试策略的制定,和风险的评估与规避措施有一个制定,一般由测试负责人编写,当然我们可能也会参与相关的评审工作。
3)测试设计阶段:主要任务是编写测试用例,会参考需求文档(原型图),概要设计,详细设计等文档,有不明确的也会及时和开发,产品经理沟通,用例编写完成后会进行评审。
4)测试执行阶段:首先搭建测试环境,执行预测(冒烟测试),以判定当前版本可测与否,如果预测通过,正式进入系统测试,遇到问题提交bug到缺陷管理平台,并对bug进行跟踪,直到被测软件达到测试需求要求,没有重大bug,测试结束----(完善测试用例)
5)测试评估阶段:出测试报告,对整个测试的过程和版本质量做一个详细的评估,确认是否可以上线。
软件开发流程、测试流程梳理
6)开发人员的工作流程:需求分析-得知功能组成及设计软件结构、数据结构(概要设计、详细设计)-编写代码单元测试-代码审查-打包提交测试部-等待测试提交bug-修复bug-等待测试回归bug-……N轮-版本上线-面向用户使用
7)测试人员的工作流程:需求分析–编写测试用例-评审测试用例-搭建测试环境-等待开发研发完成,提交测试包进行测试(酱油期)-部署测试包-冒烟测试(预测)-执行测试用例-bug跟踪处理(提交及回归bug)……N轮-版本上线-面向客户使用
三、常见笔试面试题
1、笔试题:
1)生命周期模型包括哪些阶段?你们开发的模型是什么?简化文字
问题定义及规划-需求分析-设计-编码测试-运行维护
敏捷开发模型
2)测试流程包含哪些阶段?
需求分析–编写测试用例-评审测试用例-搭建测试环境-等待开发研发完成,提交测试包进行测试(酱油期)-部署测试包-冒烟测试(预测)-执行测试用例-bug跟踪处理(提交及回归bug)……N轮-版本上线-面向客户使用
2、面试题
1)你们公司的开发流程是怎么样的?
了解需求概要设计详细设计编码打包提交测试部-等待测试提交bug-修复bug-等待测试回归bug-……N轮-版本上线-面向用户使用
2)你们公司的测试流程是怎么样的?各个阶段的输出是什么?
测试需求阶段:了解测试需求;
测试计划阶段:编写测试计划;
测试执行阶段:编写测试用例;
测试执行阶段:提交bug到问题库,直到没有重大bug,测试结束,完善测试用例;
测试评估阶段:确认是否可以上线,编写测试报告
软件测试常见面试题(一)
1、开发犯低级错误怎么办?
开发首先要规范好编码,出低级错时不要职责,内心指出错误。让他们自己进行测试,反思找出错误。
2、你进行过那些测试,擅长什么?
我主要从事web测试,搭建环境,对程序进行集成测试、系统测试、回归测试。还有编写测试用例,使用手册,功能测试文档。
3、开发说不是bug怎么办?
将自己的见解告诉开发,不行就把见解和bug提交项目经理决定。
4、你的职业规划?*
巩固基础测试知识,提高理解需求能力。
学习自动化测试,并且运用。技术到尾后学习带领测试团队。
最后争取达到测试经理水平。
5、什么测试用例才是合格?*
能覆盖到所有测试点
6、缺陷报告测试组成?
缺陷编号、缺陷标题、缺陷描述缺陷有限等级、
缺陷优先程度、缺陷所属模块、缺陷所属版本、缺陷所属开发人员、
输入数据、输出结果、缺陷分析等。
C/S模式,使用交替方法确认是client还是server端问题
7、测试用例包括那些
用例编号、测试环境、用例标题、输入数据、预期结果
8、软件评审的人员和目的
人员:客户、项目经理、开发人员、测试人员
目的:查看软件是否还存在问题。是否在不同平台正常运行,是否有和客户理解不一致的地方,是否有改进的地方
10、兼容测试
检查软件在不同软件、硬件平台是否可以正常运行。
主要查看在不同操作系统、浏览器、数据库、不同版本是否正常运行
11、为什么进行软件测试?
没经过测试的软件无法保证质量,好比iso质量认证一样。
测试中发现问题,即是提交开发改进,在软件发布时得出软件质量。
12、软件测试类型有那些?区别与联系?
常见:功能测试、性能测试、界面测试。
功能测试:占比最大,也叫黑盒测试(不看代码)。进行动态测试时,需要测试软件功能,不需要测试软件内部结构和处理过程。
技术方法有:等价类划分法、边界值分析、错误推测、因果图和综合策略。
性能测试:通过自动化测试工具模拟多种正常、异常、峰值条件,对系统各项性能指标测试。
负载测试、压力测试属于此。负载测试:确定各项工作负载下的系统性能,目标是负载主键增加时,系统各项性能指标变化;压力测试:通过系统的瓶颈,获得系统能提供的最大服务级别。
界面测试:界面好坏决定用户对软件第一印象。合理的界面带来轻松愉悦感受,失败界面有挫败感,让强大的功能付诸东流。
区别:功能测试关注软件功能,每个功能可能存在的问题。性能测试软件多用户并发的稳定性和强壮性。界面测试关注用户体验和易用性。
13、好的测试用例关键?
白盒测试:较少的用例覆盖尽可能多的内部程序逻辑结果。
黑盒测试:较少的用例覆盖模块输出和输入接口。一最少用例在合理时间内发现最多的问题。
对可行和不可行的都要考虑,(1)输入 (2)详细操作步骤 (3)预期输出 (4)实际输出
14、黑盒、白盒、单元、集成、系统、验收测试的区别与联系?
黑盒:已知功能设计规格,测试正门每个功能是否复合要求。
白盒:已知内部工作过程,测试正门每种内部操作复合设计规格。
黑盒意味着测试在软件的接口出进行,把测试对象看做一个黑盒子,不考虑程序内部逻辑结构和内部特性,仅看需求说明书检查功能是否复合需求。黑盒-》功能测试(或者 数据驱动测试)
15、软件开发过程与角色分工?
测试配合开发等进行需求分析和讨论,根据需求说明书指定《项目测试计划》,编写测试用例,建立测试环境。
测试负责新产品测试,原有产品的升级测试,负责软件问题解决过程跟踪,软件开发文档、开发工作的规范化,管理开发部门的产品文档,制作用户手册、操作手册,产品上限测试,监督软件开发过程执行,提高软件质量。
16、软件开发过程与角色分工?
开发与测试开会讨论需求。需求分析人员写出需求分析说明,三部门讨论可行性。给出详细设计说明书,开发编码,给出系统流程图。测试根据此,给出bug统计。
17、不同测试类型的联系与区别?
功能、性能、可靠性、安全性、负载测试,
压力、安装\卸载、启动\停止、兼容、互联测试,
文档、回归、可使用性、容量测试
18、测试计划工作包括?
时对工作内容的有效组织和规划,保证测试工作有效展开。包括测试目标,测试范围定义,测试方法选择,测试进度里程碑,测试资源管理和配置。
测试目标最重要,因为他是软件测试的最终达到结果
19、性能测试工具,院里、实际应用
LoadRunner。能够录制测试的操作步骤,对其模拟出多个用户播放出来。
(1)visural user genertor:创建脚本,选择协议,录制操作,编辑操作
(2)中央控制器 controller:调度虚拟用户。创建场景,选择脚本,建立虚拟用户,设计shedual,设置ip spoofer
(3)运行脚本,分析shedual
(4)分析测试结果
20、兼容性
平台兼容、网络兼容、数据库兼容、数据格式兼容。
缺陷等级分类
极高:测试过程司机、系统崩溃、数据跌势、功能没有实现
很高:导致软件功能不稳定、功能实现错误、流程错误
中级:校验错误、罕见故障、错别字,不影响功能,影响体验
低级:没影响的小问题
21、缺陷生命周期
新建bug–提交bug–确认bug–非配bug–修复bug–验证bug–关闭bug
22、测试结束标准
1)一二级缺陷数目达到项目质量管理目标要求,测试暂停返回开发
2)项目出现重大估算和进度偏差,需要暂停或者终止
3)新需求变更大,需修改测试计划和测试用例再进行
4)开发暂停,测试也暂停,备份暂停时的数据
5)所有功能、性能测试用例100%进行
23、测试生命周期
需求测试计划指定和评审–测试用例编写–测试用例执行–bug管理–测试报告输出
24、自我介绍套路
1)很高兴获得面试机会……想证明我是何氏的人选……想获得您的认可……
2)反问面试官:您看我继续介绍项目还是您提问关心的问题?
25、项目介绍
1)先整体再局部介绍,项目五大维度:规模(代码规模、需求规模、用例规模、工作量、进度、质量、成本),测试流程,角色与职责,项目中自己角色,自己的特色(做得好的、遇到的困难、做得差的),最后是心得体会。
26、数据库问题
数据库增删改查(insert、delete、update、select);
表结构增删改查(create、drop、alter、describe);
存储过程;
触发器等
27、Linux系统
常见50个命令(find、-name、type、perm、user、group、ctime、atime)
熟悉vi、熟悉linux搭建测试环境。LAMP环境搭建。
28、缺陷相关
缺陷跟踪流程(流程基本要素)、整体流程(会画)、缺陷单的20个属性、属性的意义、如何描述好缺陷单、缺陷单的5C原则、缺陷重现步骤。你认为最经典的bug
29、用例相关
用例格式要素、用例设计工程方法论、方法要求
如何利用。
如何评审用例,从那些维度评审,设计好用例需要那些只是结构
30、软件测试流程
熟悉产品/项目–需求评审–测试需求–测试计划–测试方案–测试用例–预测试,第一轮正式测试–第二轮回归测试–第三轮测试,测试报告–总结–测试指南
31、网络相关
基本网络知识(重点TCP/IP协议)
32、测试工具
性能测试工具:
自动化测试工具:
测试管理工具:
如何去测试给定软件
技巧:从质量模型、测试工具、测试方法、测试流程、探索式测试,宏观解决,再围观讲解用例设计
33、卓越工程师素质
沟通、五心工程师、追求完美
34、你还有什么想要问的吗?
满意情况:先表示感谢,问如果有下一轮面试,什么时候,做什么准备;
一般般情况:感谢,对自己表现不太满意,能否给我一些建议;
很糟糕:感谢,认识到不足,希望给建议
35、测试用例编写结构
功能性、界面UI、易用性、安全性、兼容性
36、STAR法则
S(situation):项目属于什么类型,周期多长
T(task):团队分工,你的角色
A(action):具体实施,自己做了什么
R(result):最后成果,你的收获
37、如何测试纸杯
功能性:是否漏水;是否喝到水
安全性:有没有细菌
可靠性:摔下来的损坏程度
可移植性:不同地方、温湿度使用
兼容性:容纳果汁、啤酒、汽水、汽油等
易用性:是否烫手、防滑、方便饮用水
用户文档:使用手册对用法、限制、使用条件描述
疲劳测试:分别装上水、汽油等24小时,泄露情况
压力测试:用镇不断加压,承受多达压强
生命周期和流程
一、软件的生命周期
软件的开始到消亡的过程
1)瀑布型生命周期模型(具有顺序性和依赖性)
设计(概要设计和详细设计文档)
编码阶段
测试阶段(发现程序设计和逻辑测试的错误,主要包括黑盒和白盒)
单元测试(开发)、集成测试(组合测试)、系统测试(根据测试用例)、验收测试
数据传递(发出去的东西和收到的东西是不是一致)
验收测试(是否达到预期效果)
运行维护阶段(占整个生命周期最长的) 有新的需求增加或发现以前没有发现的bug
分为改变性维护和修复性维护
一般金融性企业会采用瀑布模型加敏捷开发模型
2)v模型 开发和测试同时进行的方式
详细测试阶段已经实现了伪代码
3)敏捷开发模型(产品需求-开发-测试)
每个迭代会新增一些功能;不同的渠道(客户、市场部)反馈到产品
敏捷开发模型的工作模式?
1、产品收集客户需求,整理需求(需求优先级排序),确定迭代版本需要实现的功能,预估迭代周期
迭代一 功能1 功能2 功能3 功能4 3-4周
迭代二 功能5 功能6 功能7 功能8 4-5周
2、分解任务,形成任务列表,然后开始工作
3、每天10-15分钟站立会议;汇报下工作进度,工作中遇到的困难
4、更新任务列表,直到迭代周期完成
二、软件测试的工作流程
1、开发流程:需求分析阶段(输出需求规格说明书/原型图)->参与需求评审->召开会议确定开发计划
->设计文档(概要设计和详细设计)->编码->自测(单元测试)->转测->部署测试环境->跟踪解决bug(N轮)->发布上线
2、测试的流程:需求分析阶段(输出需求规格说明书/原型图)->编写测试计划(测试计划包括测试范围,进一步安排,人力物力安排,测试策略,风险评估等)->测试设计阶段(设计测试用例,参考原型图、需求文档、概设和详设)->用例评审(开发、测试、产品参与)->(酱油期-等待转测,可以用来深入了解需求,优化测试用例)部署测试环境->测试执行阶段(冒烟、正式系统测试、提交bug并跟踪维护bug)->测试评估阶段(输出测试报告)->发布上线
冒烟测试:转测之后,测试人员要进行冒烟测试,主要是测试业务流程是否通过,冒烟通过才进入正式的系统测试
1)为什么跟踪维护?答:关注重要bug,回归测试
2)测试不通过,能不能上线?
答:不是绝对不能上线,项目比较着急,未通过功能不影响可以上线,测试只需告知风险即可,测试报告输出后,是否上线,由项目组决定
3)如何评估测试是否通过?
测试通过的标准(测试准出):
1、测试用例100%执行
2、严重及以上bug,无遗留
3、一般级别的bug(延期解决、不予解决)<5%
4、建议级别的bug<10%
建议级别的bug:用户体验、友好性、界面(文字、大小、颜色、位置、排版)
软件测试的基本流程(重点)
测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议
测试设计阶段:主要任务是编写测试计划,参考软件需求规格说明书、项目总体计划,内容包括测试范围(来自需求文档)、进度的安排,人力物力的分配,整体测试策略的制定,和风险的评估与规避措施,有一个制定,一般有测试负责人编写,当然我们可能也会参与相关的评审工作
测试执行阶段:首先搭建测试环境,执行预测(冒烟),以判定当前版本可测与否,如果预测通过,正式进入系统测试,遇到问题提交bug到缺陷管理平台,并对bug进行跟踪,直到被测软件达到测试需求要求,没有重大bug,测试结束----(完善测试用例)
测试评估阶段:出测试报告,对整个测试的过程和版本质量做一个详细的评估,确定是否可以上线
开发环境?测试环境?生产环境?
1)开发环境-开发用的(单独的服务器)
2)测试环境-数据可以随便添加、破坏,copy开发环境数据,和开发环境要独立开最好
3)生产环境-真实用户产生数据
笔试题
1、生命周期模型包含哪些阶段?你们开发的模型是什么?简化文字
2、测试流程包含哪些阶段?
面试题
3、你们公司的开发流程是怎样的? “口语化”
4、你们公司的测试流程是怎样的?各个阶段的输出是什么?作业
答:首先进行需求分析,输出需求规格说明书、原型图等;然后根据需求规格说明书、原型图来编写测试计划,测试计划主要包括测试范围,进一步安排,人力物力安排,测试策略,风险评估等;参考原型图、需求文档、概要设计文档和详细设计文档等编写用例;编写完成后由开发、测试、产品共同参与,进行用例评审;不断地优化测试用例;部署测试环境;先进行冒烟测试,通过后进入到正式的系统测试;提交bug并跟踪维护bug;输出测试报告;评估达到上线标准后,发布上线