您现在的位置是:首页 >其他 >1.软件测试网站首页其他
1.软件测试
目录
一、面试重点
1.什么是软件测试?
软件测试人员验证软件是否满足用户的需求。
软件测试的阶段:整个软件开发的生命周期。在需求阶段,就需要介入了,验证需求的合理性和正确性。
2.软件测试和软件开发的区别
开发:广度小,专业度高
测试:所需技能比较广泛,但是专业度低
目的:
测试人员确保程序实现了它应该实现的功能(用户需求)
软件开发人员确保程序做了他想让程序实现的功能
角色:
测试:由测试人员和开发人员共同完成
开发:开发人员完成
阶段:
软件测试贯穿了整个软件开发的生命周期
软件开发仅在开发阶段
3.你为什么选择软件测试?
综合能力:沟通、学习、开发、文字
自动化测试技术
编写测试用例的能力
兴趣、责任感
因为我对软件测试非常感兴趣,我在业余时间学习了相关的开发语言和知识(Java、JDBC、网络),学这些都是为了我做好软件测试做准备的。我还完成了自己项目的测试用例
4.什么是需求?
用户的期望和满足合同(文档、规则、标准)的规定所需要的条件和权限。
用户需求和软件需求。软件需求是用户需求的细化,是用户需求的具体实现细节和规范。
用户需求比较粗略,直接实现比较困难。因为没有细节,所以需要软件需求把用户需求细节化和实现,把用户需求变成一个具体的可实现的过程文档。
5.软件测试人员如何深入了解需求?
站在用户的角度,从需求分析阶段就开始介入了解需求。
6.什么是内存泄露?
使用资源,执行一些操作时,资源没有及时释放,导致资源被占有的越来越多,电脑就越来越卡,直到没有资源可以使用。
7.什么是测试用例?
测试用例就是向被测系统发起的一组集合,包含测试环境,测试数据,预期结果(重要性、优先级、操作方式、标题等)
例:用正确(已注册)的手机号和密码登陆网易邮箱界面,登陆成功
19916691739 11223344
测试用例:
测试环境:Chorme 版本99.0.4844.51 PC端 Windows系统
测试数据:用户名:19916691739 密码:11223344
测试步骤:1.打开邮箱的URL:https://mail.163.com/?mas=authfail#return
2.输入用户名和密码
3.点击登陆
预期结果:登录成功
8.测试用例有什么优点?
衡量需求的覆盖率,有一定的复用性、借鉴意义;可以用于回归测试,防止遗漏测试需求
9.什么是软件错误(bug)?
当且仅当,程序规格说明书(软件需求)存在并且合理,如果软件功能和软件规格说明书不相符合,我们就说这是软件错误;
当软件需求不存在,用户需求存在且合理,软件功能和用户功能不相符合,就说明是软件错误。
二、开发模型(5个)
软件开发的生命周期:
需求分析——计划——设计——开发——测试——运行维护
1.瀑布模型
特点:阶段性强,灭一个阶段比较独立;看中前期的需求分析和后期的测试
缺点:测试在编码后才开始介入,导致前期的问题,后期才发现,会失去错误补救的机会。
2.螺旋模型
螺旋模型适用于项目庞大,前期风险不大,不是很明确的项目
特点:强调每一个迭代的测试质量和风险分析
缺点:风险管控人力物力投入很多,成本比较大。
3.增量模型 迭代模型
同一个系统的四个模块A B C D 两周时间
增量模型:第一周开发A B 功能模块,第二周开发C D功能模块
迭代模型:第一周先开发A B C D 的基础功能,第二周在第一周基础上完善其他的功能
特点:抗风险能力强
4.敏捷模型:
个体与交互重于过程和工具,可用的软件重于完备的文档,客户协作重于合同谈判,响应变化重于遵循计划。(轻量级开发模型)
特点:轻文档,轻流程,重目标,重产出
团队5-7人,时间2-4周
角色:
PO product owner,把用户需求转化成user story
SM scrum master 项目经历,管理整个团队,负责敏捷流程顺利实施
ST scrum team 各种技能的人组成,开发、测试、UI
发布计划会议:产品经理收集需求形成user story,讲解,排除本迭代需要进行开发的user story,形成spring backlog
迭代计划会议:分析用户故事,把user story分解成一个个的任务,分配给开发人员,制定开发计划
每日站会:昨天干了什么,今天的计划
产品演示会议:甲方,用户演示产品,PO把不足的地方收集成user story,下一次迭代改进
回顾计划会议:回顾整个迭代过程,把不足的地方找处理,在下一次迭代过程中改进,优化迭代流程
5.测试模型
(1)V模型
特点:
每一个阶段独立性强,左边每一个阶段是右边测试阶段的依据,和右边每一个测试阶段意义对应
缺点:(瀑布模型的变种)
编码后才进行测试,前期的错误后期才发现,会失去错误及时纠正的机会
(2)双V模型
特点:每一个阶段独立性强,测试从一开始就介入,可以保证前期的问题及时发现和纠正
缺点:每一个阶段都是进行串行的过程。一个阶段完了之后就惊醒下一个阶段,不支持敏捷开发(拥抱开发)