1、什么是软件测试?
—验证软件功能是否满足用户的需求
—测试程序的正确性,结果是否满足预期
2、测试和开发的区别?
目的不同
–测试的任务是发现程序中的缺陷;开发是基于软件需求完成相应的代码实现
参与角色不同
–测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。开发由开发人员完成。
执行的阶段不同
–测试贯穿整个软件开发生命周期,开发一般在开发阶段
3、为什么想做测试?作为一个测试人员应该具备哪些素质?
—可以加上自己的经历等
—善于人际交往、写作能力好、细心、觉得有意思、擅长
–细心、有责任心
4、测试用例的编写(只写测试点)
-先问需求
-若没有需求,自己设一个方面
测试点:基本功能(正常/异常:界面友好、材料、大小是否合适)、性能(响应时间/多个同时访问会不会有影响/压力负载测试最大的承载能力)、兼容性(不同操作系统/不同设备)、安全性、易用性(界面美观/舒适/使用方便/携带方便)
根据面试场景自行发挥
5、软件的生命周期
软件生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。 如果把软件看成是有生命的事物,那么软 件的生命周期可以分成6个阶段,即需求分析、计划、设计、编码、测试、运行维护。
6、开发模型(4种)
增量迭代
7、敏捷开发模型
与敏捷开发模型的区别4
*价值观:
**沟通:个体与交互重于过程和工具
**轻文档;可用的软件重于完备的文档
**客户参与:客户协作重于合同谈判
**拥抱变化:响应变化重于遵循计划
*scrum(敏捷的一种模式):
**po:产品负责人product owner 负责整理user story(用户故事)
**sm:敏捷教练scrum master 负责召开会议,协调项目,为研发团队服务
**team:研发团队 由不同技能成员组成,通过紧密协同,完成每一次迭代的目标,交付产品
*特点:周期短(迭代)、人员少(5-9)、每天开一个站立会(15min)
*敏捷模型流程:(6步)
**产品负责人负责整理user story,形成左侧的product backlog。
确定每次迭代完成的 user story——**发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出 这一期迭代要完成的story列表,sprint backlog。
**迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有 明确的负责 人,并完成工时的初估计。
**每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。 演示会议:迭代结束之后,
**召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成 果。期间大家的反馈记录下来,由po整理,形成新的story。
**回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改 进的效果。
开发的流程:
PO整理USER STORY——确定每次迭代完成的USER STORY——任务的认领、时间评估——开发中——开发完成——测试中——测试完成——发布上线
敏捷中的测试:
挑战一:轻文档
挑战二:快速迭代
8、软件测试模型
软件测试四种模型
9、软件测试的生命周期(流程)
需求分析-测试计划-测试设计-测试执行-测试评估
需求分析:确认需求范围
制定测试计划:时间表:(什么人?什么时间?做什么事情?)、软件类、工具类的资料、风险
测试设计、测试开发(自动化):测试用例的编写
测试执行:执行测试用例、缺陷管理
测试评估:编写测试报告(测试结论、缺陷分析)
10、缺陷的要素(比测试用例多一个实际结果):版本号、测试环境、测试步骤、预期结果、实际结果
11、编写测试用例的方法(7种)
基于需求
等价类
边界值(等价类的补充方法)
因果图
正交排列
场景法
错误推测法
12、测试分类
——按开发阶段来分
- 单元测试
- 集成测试
- 系统测试
- 验收测试
单元测试(1个):对一个模块进行测试,对模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测进行测试,用的是白盒测试
集成测试:大于等于两个:测试模块之间的功能与数据传输
系统测试:软件和硬件都测 扩展:先冒烟后系统再回归
冒烟测试:核心主干流程进行测试 作用:判断测试人员是否接受本次测试,过接受,不过不接受
黑盒测试就是功能测试
回归测试:之前修改的bug和担心影响的功能点的测试,其他系统太复杂时可以采用自动化测试(写好脚本)
验收测试:把产品部署在用户里面,让用户验收 测试人员:用户
—— 按是否查看代码来分
- 黑盒测试
- 白盒测试
- 灰盒测试
黑盒测试:就是功能测试,对软件进行一系列的输入,看输出结果是否与自己预期结果相同
白盒测试:对代码进行测试,测试代码中的接口、业务逻辑、数据结构、路径覆盖、错误处理、边界值等进行测试;接口测试也是白盒测试的一种
灰盒测试:既关注代码有关注功能
——按测试对象分
-
性能测试
-
安全测试
-
兼容性测试
-
文档测试
-
易用性测试(用户体验)
-
业务测试
-
界面测试
-
安装测试
-——按实施组织来分 -
a
-
B
-
第三方
AB测试区别:(按实施组织)
1、测试人员不同A:公司内部人员(除本项目的研发人员和测试人员)B:用户
2、环境不一样:A:研发环境或预发布环境(在发布产品之前测试到生产环境之间加的环境) B:用户环境
3、先后顺序 A在B之间
4、时间长短 A比较短 B时间长
-——按测试执行方式
-
静态测试
-
动态测试
-——按是否手工 -
手工测试
-
自动化测试
——按测试地域划分 -
本地测试
-
国际化测试
13、如何确保你编写的测试用例的正确性?(面试题)
进行评审:
1、 同行评审
2、 用户检查
3、 项目组评审
14、产生争执怎么办(面试题)
-1、自查,是否bug描述不清,或者bug级别定错
-2、站在用户角度考虑问题
-3、bug定级要有理有据
-4、提高自身能力和业务水平,不光提出问题,最好也能提出来解决方案
-5、开发人员不接受时,不要争吵,寻求第三方的帮助,决定如何处理这个bug,并写好备注
15、测试网站从哪些方面考虑?
[页面元素]:检查一些页面元素是否正确,如title,导航条,导航位置,广告栏,等是否正确显示。
[页面功能]:页面功能操作是否正确
[页面内容]:图片文字内容是否正确显示
[页面布局]:是否美观合理
其他:一个网页在网站整体中应该要注意的部分。如网页被访问的次数,网页链接是否孤立等等
17、接口测试
接口测试总结
16、工具
Postman:接口测试工具,在文本框填入想要测试的URL,然后选择对应的方法,在下方可填入对应参数,确认后,下面的文本框就会出现应该得到的内容,可以和自己的预期结果对比,看是否符合自己的预期。
必填参数:get方法里的:version默认v1
填写完毕后,会返回返回体body、cookies、 headers、TestResults(如果上面编写了Test脚本则会后返回结果)
通过key-value填写
17、软件测试的方法
从是否关心软件内部结构和具体实现的角度划分,测试方法主要有白盒测试和黑盒测试。
白盒测试方法主要有代码检査法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
代码检査法:详解
静态结构分析法:详解
静态质量度量法:详解
逻辑覆盖法:详解
基本路径测试法:详解
路径覆盖:
程序变异:
1、域测试:
•域测试的“域”是指程序的输入空间。
•输入空间又可分为不同的子空间,每一子空间对应一种不同的计算。
•子空间的划分是由程序中分支语句中的谓词决定的。
•域测试正是在分析输入域的基础上,选择适当的测试点以后进行测试的。
•域测试有两个致命的弱点,一是为进行域测试对程序提出的限制过多,二是当程序存在很多路径时,所需的测试点也就很多。
2、符号测试:
•符号测试的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,这一方法也是因此而得名。
•普通测试执行的是算术运算,符号测试则是执行代数运算。因此符号测试可以认为是普通测试的一个自然的扩充。
•从符号测试方法使用来看,问题的关键在于开发出比传统的编译器功能更强,能够处理符号运算的编译器和解释器。
•目前符号测试存在一些未得到圆满解决的问题,分别是
1、分支问题
2、二义性问题
3、大程序问题
3、Z路径覆盖
4、程序变异
3.路径覆盖:
•完成路径测试的理想情况是做到路径覆盖,但路径太多。因此对循环机制进行简化,从而极大地减少路径的数量,使得覆盖这些有限的路径成为可能。我们称简化循环意义下的路径覆盖为Z路径覆盖。
•对于程序中的所有路径可以用路径树来表示
•设法遍历了所有的叶结点,那就得到了所有的路径,生成每个路径的测试用例,就可以做到Z路径覆盖测试。
4.程序变异:
•程序变异方法与前面提到的结构测试和功能测试都不一样,它是一种错误驱动测试。
•错误驱动测试方法,是指该方法是针对某类特定程序错误的。
•错误驱动测试主要有两种,即程序强变异和程序弱变异。
黑盒测试方法主要包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等
从是否执行程序的角度划分,测试方法又可分为静态测试和动态测试。
静态测试包括代码检査、静态结构分析、代码质量度量等
动态测试由3部分组成:构造测试实例、执行程序和分析程序的输出结果。
遇到面试题扩展:
面试补充:
1、性能测试工具
JMeter 、LoadRunner
2、回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
3、单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
4、自动化测试
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
5、测试项目的具体工作
1.搭建测试环境
2.写测试用例
3.执行测试用例
4.写测试计划、测试报告
5.测试,并提交BUG单
6.跟踪BUG修改情况
7.自动化测试,编写脚本,执行,分析,报告
8.性能测试,编写脚本,执行,分析,调优,报告
6、接口测试都用在什么地方呢
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
7、禅道的基本使用流程
基本流程如下:
- 产品经理创建产品
- 产品经理创建需求
- 项目经理创建项目
- 项目经理确定项目要做的需求
- 项目经理分解任务,指派到人。
- 测试人员测试,提交bug。
8、bug有哪些类型
1、按严重程度分类:崩溃、严重、一般、界面
2、按优先级分类:
重要且紧急:优先级最高,一定要做的。
重要不紧急:暂时可以先缓一缓,但一定要做的。
紧急不重要:可以先准备下,随时准备做的。
不紧急不重要:可忽略不计的。
3、按bug的生命周期:
新建(new)
已确认(open)
已解决(fixed)
关闭(closed)
重新打开(reopen)。
9、百度页面,怎么测
功能
百度首页呈现的功能:新闻,网页,贴吧,知道,音乐,图片,视频,地图,这8个是最主要的;紧接着次要的百科,文库,hao123,更多;除此之外就是把百度设为主页,安装百度浏览器,加入百度推广,关于百度等等;和用户相关的还有登录,注册.
1.1网页搜索
百度首页8个主要功能,排除地图部分的搜索其他7个比较类似.这里主要讲网页搜索,那么测试的也就是输入框,比较有效的方法就是边界值测试和区间测试.
1.1.1边界值测试
边界值测试可以测试一下输入字符的数量:
a) 不输入文字,直接按搜索
b) 输入38个汉字后点击搜索按钮,成功跳转到搜索结果页面
c) 输入39个汉字,截取前面38个汉字
d) 输入100个汉字,截取前面38个汉字
e) 尝试输入101个汉字,无法成功输入
f) 英文符号的测试
g) 空格的测试
复制粘贴38个汉字进入搜索文本框,并中间加入62个连续空格后按下搜索
1.1.2区间测试
a) 有意义的关键词做输入值,预期能搜出结果
b) 无意义的关键词做输入值(比如用脸滚键盘来输入一些乱七八糟的关键字),预期搜不出任何结果
那么对于搜索有个问题就是如何校验搜索结果的正确性?这里就不再适用黑盒测试的方法,可以尝试白盒测试或者自动化测试,可是这个校验算法本身就很难,用什么规则去定义呢?用另一套完全不同的搜索逻辑去对比,比如谷歌和百度对比;或者设计一些通用的规则,然后去校验
2、 界面测试
图片、字体、颜色、按钮等
3、 易用性测试
a) 下拉框提示
b) 搜索结果页提示”要找的是不是xxxx“
c) 搜索结果页提示”关键字里去掉引号可以找到更多xxx“
d) 搜索结果页提示”您输入的网址是不是xxx“
4、性能测试
借鉴http://wenku.baidu.com/view/d4ff91b369dc5022aaea000d.html
5、 兼容性测试
借鉴http://wenku.baidu.com/view/d4ff91b369dc5022aaea000d.html
a) WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用
b) IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下的应用
c) SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试
d) 简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试
e) IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试
f) 与各相关的监控程序的兼容性测试,如杀毒、监控、防火墙等工具同时使用
6、安全性测试
借鉴http://wenku.baidu.com/view/d4ff91b369dc5022aaea000d.html
a) 被删除、加密、授权的数据,不允许被查出来的,是否有安全控制设计;
b) 录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句
c) 产生漏洞,如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。
d) 通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;
e) 对涉及国家安全、法律禁止的内容是否进行了相关的过滤和控制;
除了上文所讲到的,数据备份测试功能还应该考虑到,查看能否备份数据库。
百度用户的密码等资料也应测试
7、 异常测试
借鉴http://wenku.baidu.com/view/d4ff91b369dc5022aaea000d.html感觉其中的异常测试没有太大意义啊。
8、 交互测试
与鼠标的交互,将光标移到搜索框,点击鼠标右键,查看相关的menu菜单
与键盘的交互,将光标移到搜索框,键盘快捷键ctrl+c,ctrl+v等
10、如果一个按钮点了没有反应,会是哪些问题?
1.先排查是自己的问题还是所有人的问题
2.如果是所有人的问题(网页上的按钮的点击事件处理出问题了)
1.排查这个按钮是否有点击事件处理
2.排查这个点击事件的处理是否正确
3.排查处理结果是否显示正确(或许点击事件处理了,只是没有正确显示)
11、怎样描述一个bug?
发现问题的版本
问题出现的环境
错误重现的步骤
预期结果
实际结果
12、测试用例考虑方面
界面
功能(正常、异常)
兼容性
易用性
安全性
性能