面试篇:
1.什么是软件测试?
验证软件是否满足用户的需求软件测试是按照一定的评判标准(需求)来进行活动的
【注】不运行系统或程序也可以进行软件测试测试
2.软件测试和软件开发的区别?
软件开发:用程序开发的方式把用户的需求实现成一个软件(例如APP,web网站,小程序等) 角色:软件开发人员软件测试:主要由测试人员进行测试,看是否满足用户需求
(1)软件测试和软件调试的区别?
软件调试发生在软件开发过程
-
目的不同:
软件测试是查看软件是否满足用户的需求;软件调试是开发人员检查程序是否实现了他想要程序实现的功能(本质区别) -
角色不同:
软件测试的角色包括软件测试工程师,白盒测试工程师和开发人员(白盒测试:进行单元测试–》对一个模块进行测试 Java junit)
软件调试的角色则是开发人员 -
阶段不同:
软件测试贯穿到了整个软件开发的生命周期;软件调试只是在开发阶段
(2)技能方面:开发要求技术范围小,专业度高;测试要求技术面广,专业度低
3.一个优秀测试人员所具备的素质?
(面试官:为什么选择软件测试这个职位?)(1)思维方式:逆向思维,发散性思维
(2)兴趣
(面试官:为什么选择测试?是因为简单吗?)
(3)能力:学习能力、语言表达能力、文字能力、编程能力
(4)性格:不浮躁;对问题敏感;批判性思维
(5)有抗压力和责任感
测试左移:需求前调研阶段和需求阶段,测试人员参加
测试右移:产品上线后,系统监控,日志记录和分析
概念篇
1.什么是需求?
满足用户的期望和正式规定的合同、标准、文档所需要的条件和权限
包括:
- 用户需求:用户想要软件实现的功能
boss/实际用户(反馈和要求)/公司的业务人员(针对公司的内部系统) 非常简单,没有实现细节 - 软件的需求:用户需求的具体化,时用户需求具体的实现细节,开发人员要根据软件需求进行软件开发
软件需求是用户需求转换而来
2.什么是BUG?
- 当我们的规格说明(软件需求)存在且合理,如果软件功能和需求规格不符合,说明是软件错误(BUG)
- 当规格说明不存在,如果用户的需求存在并且合理,如果功能和用户需求不匹配,说明是软件错误(BUG)
3.什么是测试用例?
测试用例就是一个集合,包括测试平台,测试环境,测试数据,测试步骤,预期结果,标题、测试功能模块,前置条件,重要性、优先级、操作方式等
为什么测试工程师要写测试用例?
评估测试的功能的覆盖率,不会进行大量的冗余操作,可以重复使用
4.软件开发的五个模型和软件测试的两个模型?
软件开发的生命周期:需求分析–计划–软件设计–程序编码–软件测试–运行维护
(1)软件开发的模型:
- 瀑布模型(有去无回):适用于需求稳定的项目,项目前期的风险或错误后期的测试才发现,会失去修正改错的最佳时机
优点:各个阶段比较独立,看重需求分析和软件测试
缺点:无法适应需求的变化,测试到编码后才介入,导致前期缺陷无法及时发现,无法及时修正 - 螺旋模型:适用于项目比较庞大,需求不明确,风险比较大的项目,有利于项目风险的控制
优点:强调软件质量;每一次迭代进行严格的风险分析,提供讨论项目是否又必要进行下去的机会
缺点:引入风险管理会投入大量的人力物力 - 迭代模型
例如:一个系统有A,B,C,D四个模块的功能需要完成,两周时间
迭代:
第一周:完成A,B,C,D四个模块的基础功能,搭好基础框架
第二周:完成A,B,C,D四个模块的后续功能,做功能完善
项目风险防空能力比较强 - 增量模型
增量:第一周完成A,B模块功能,第二周完成C,D模块功能
项目风险防空能力比较强
(一般迭代模型和增量模型一起使用) - 敏捷开发模型(轻文档,轻流程,重目标,重产出)
敏捷开发拥抱变化
scrum流程😗
(1)产品发布计划会议(产品经理负责对user story进行排版、讲解,整理出这一期迭代需要完成的user story)
(2)迭代计划会议(SM ST细化需求,分配任务,具体到任务完成的具体时间)
(3)开发过程,进行每日站会(三件事,昨天做了什么,今天得计划,以及遇到的问题)
(4)演示会议(向客户或者老板演示产品成功,期间提出的问题,由产品经理继续整理成user story,放到下一期迭代)
(5)回顾会议(总结,改进敏捷流程)
scrum流程的三个角色
- PO:product owner 产品经理 客户的代表方,产品经理将用户需求转化为一个个user story
- SM: scrum master 项目经理
- ST:scrum team 研发团队,交付一个高质量可用的软件
问题:测试人员在敏捷开发过程重怎么去完成测试任务?
测试人员核心任务不变----->找bug;
要知道bug问题产生的原因,解决方案
特点:
①短周期开发。②增量开发。
③ 由程序员和测试人员编写的自动化测试来监控开发进度。
④通过口头沟通、测试和源代码来交流系统的结构和意图。
⑤编写代码之前先写测试代码。也叫做测试先行。
缺点:
①团队的组建较难,人员素质要求较高。②对测试员要求完全掌握各种脚本语言编程,会单元测试。
(2) 测试模型:
- 软件测试V模型
单元测试:是模块测试,验证软件的基本组成单位的正确性,是白盒测试
集成测试:是模块间的测试,测试接口(软件各模块之间的接口和软件与硬件之间的接口)是否正确,是灰盒测试(白盒和黑盒结合)
系统测试:系统测试包括:冒烟测试 系统测试 回归测试
(1)冒烟测试:主干流程测试,确认软件的基本功能正常,可以进行后续的测试工作
(2)系统测试:是检测系统的功能、质量、性能能否满足系统的要求,包括功能、性能、界面、可靠性、兼容性等等,是黑盒测试
(3)回归测试:修改了旧代码之后重新进行测试,确认修改后的代码没有引入新的错误或导致其他代码产生新的错误
验收测试:是确保软件的实现能否满足用户的需求或合同的要求
特点:左边的阶段和右边的测试阶段一 一对应,且左边是右边的每一个测试阶段的依据
缺点:测试介入晚,项目前期的风险和错误到后期测试阶段才发现,会失去问题及时纠正的机会;不能用于敏捷开发(拥抱变化),不适用于需求变化的项目
- 软件测试W模型(双V模型)
特点:测试在项目一开始就介入(需求阶段介入),有利于前期风险的及时发现
缺点:不能用于敏捷开发(拥抱变化)。不适用于需求变化的项目