1. 什么是软件测试?
软件测试 就是为了找BUG,为了让程序正常执行
验证软件的功能是否满足客户的需求
2. 测试、测开、开发
- 测试开发就是编写单元测试框架和自动化测试框架
- 测试是从用户的角度出发,整体实践,分析总结
- 开发是编写功能代码
3. 测试和调试的区别
- 测试的任务是发现程序中的缺陷,调试的任务是 定位并且解决程序中的问题
- 测试主要由测试人员和开发人员来执行,黑盒测试主要由测试人员完成,单元/集成测试主要由开发人员完成,调试是由开发人员完成
- 测试贯穿整个项目周期,调试一般在开发阶段
4. 测试和开发的区别
- 测试广度大,专业度低,开发广度小,专业度高
5. 为什么要选择软件测试类的工作
- 首先我对测试非常有兴趣
- 其次我的性格比较适合做测试,比如 我喜欢质疑某一个东西,就是好奇心比较重,就好像是 去坐高铁,去高铁票的时候,我就会去想 如果断电了,那票还能不能取出来,如果我已经取出来了,但是再取一次,看会发生什么,在生活中 ,我如果找到一个东西有bug,我就非常有成就感
- 最后我非常有责任感,就比如别人交代给我了一些事情,那我就得完成,因为别人把事情交给我,那就说明信任我,所以我不能辜负别人
6. 什么是需求
满足用户的期望或者规定的文档所需要的条件或者权限,包括用户需求和软件需求
7. 什么是bug
- 当且仅当软件需求说明书存在 并且正确,程序和说明书之间不符合,称之为bug
- 当用户的需求存在并且合理,程序没有满足用户的需求,称之为bug
8. 什么是测试用例
为了实施测试而向被测试的系统提供的一组集合,包括:测试环境、操作步骤、测试数据、预期结果等等
9. 软件的生命周期
需求分许、计划、设计、编码、测试、运行维护
10. 软件开发模型
- 瀑布模型:每个阶段只执行一次,线性顺序进行的软件开发模式
- 螺旋模型:测试必须跟着开发的迭代而迭代(规模大、复杂度高、风险大的项目)
优点:强调风险把控
缺点:对风险管理的要求很高 - 增量模型、迭代模型:
一个系统,开发需要ABCD四个业务模块
增量模型:第一周开发AB模型,第二周开发CD模型
迭代模型:第一周开发ABCD基础模型,第二周补充复杂的 - 敏捷:
有三个角色:PO(产品经理)、SM(项目经理)、ST(研发团队)
发布计划会议
迭代计划会议
每日例会
演示会议
回顾会议 - v模型:所有的测试都在编码之后
缺点是:如果前面需求分析错了,那后面所有的都错了,浪费太大了 - w模型:走一步测一步,测试和开发是同步执行的
优点:尽早的发现问题
局限性:一个阶段完全结束,才能进入下一个阶段,无法使用敏捷开发
11. 软件测试的生命周期
需求分析、测试计划、测试设计(测试开发)、测试执行、测试评估
12. 和开发人员产生争执了怎么办
- 先查看自己有没有把bug描述清楚
- 站在用户的角度考虑问题,应该让开发人员了解到对用户可能造成的困扰
- bug定级要有理有据
- 需要提高自身问题,不止能提出问题,还可以提出解决方案
- 如果开发人员 还是不接受,那可以进行bug评审
13. 设计用例的方法
- 等价类:依据需求将输入划分为若干个等价类,从等价类中挑选一个测试用例,如果通过,那就认为所代表的等价类都通过
有效等价类:满足需求
无效等价类:不满足需求 - 边界值:对输入输出的边界值进行测试的一种黑盒测试方法
- 因果图:是一种逻辑图,能直观的表明程序输入条件和输出条件之间的互相关系
关系有:恒等、与、或、非
步骤:
1.找出所有可能的输入和可能的输出
2.找出输入与输出之间的关系
3.画出因果图
4.把因果图转换为判定表
5.把判定表对应到每一个测试用例 - 正交法:研究多因素,多水平的一种测试方法,取出多个取值的最优组合,通过研究这些组合来分析我们这个的实验结果
因素:输入
水平:取值
正交表的列数:因素数
正交表的行数:(水平数-1)* 因素数 +1
性质:
1.每一列中各数据 出现的次数一样多
2.任何两列各有序对数出现的次数一样多
步骤:
1.找到所有的因素(变量)
2.每个因素有几个水平(取值)
3.选择一个合适的正交表
4.把变量的值放入正交表中
5.每一行就是一个测试用例
6.加上自己认为可疑但是没有在表中的测试用例 - 场景设计法:根据场景设计测试用例,比如在ATM取钱流程
- 错误推测法:根据经验和直觉去判断哪个模块有问题,针对有问题的模块进行测试用例的设计,基于丰富的经验之上
14. 测试
- 单元测试:模块接口测试
- 集成测试:对系统的接口以及集成后的功能进行测试
- 系统测试:对系统的测试
- 回归测试:修改了bug之后,重新再进行测试以及确认没有引入新的bug或者导致其他代码产生错误
- 冒烟测试:确认软件基本功能正常。可以进行后续的正式测试工作
- 验收测试:查看软件是否满足原始需求
- α测试:用户进行测试
- β测试:软件最终用户们再一个或者多个场所进行
α测试和 β测试的区别是:测试场所不同,α是在开放方的场所测试,β是在一个或者多个用户场所测试 - 第三方测试:第三方进行测试
- 黑盒测试:把软件当成一个盒子,不关心内部结构,只关心软件的输入数据和输出数据
- 白盒测试:打开盒子,研究盒子里面的源代码和程序结果
- 灰盒测试:多用于集成测试阶段,不仅关注输入输出的正确性,同时也关注程序内部的情况
15. 按照测试对象划分
- 业务测试:
测试人员把各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程 - 界面测试:
测试用户界面的功能模块的布局是否合理
整体风格是否一致
各个控件放的位置是否符合用户门的习惯
页面元素的可用性
界面中文字是否正确
命名是否统一
页面是否美观
文字、图片是否完美 - 容错性测试:
检查软件在异常情况下自身是否具有防护性的措施或某种灾难性恢复的手段,比如2月在闰年有29天,平年只有28天 - 文档测试:
文档的术语
文档的正确性
文档的完整性
文档的一致性
文档的易用性 - 兼容性测试:
平台测试
浏览器测试
软件本身能否向前或者向后兼容
能否与其它软件兼容
数据兼容性测试 - 易用性测试:
是否易于用户的使用 - 安装测试:
测试程序的安装卸载 - 安全测试
- 性能测试:
对资源利用进行的测试
执行间隔
中断或报错
响应时间
吞吐量
16. 测试类别
- 功能测试
- 性能测试
- 界面测试
- 安全性测试
- 兼容性测试
- 文档测试
- 安装卸载测试
- 其他
17. webdriver工作原理
- 可以等价于 坐出租车,你上车后,告诉司机去哪,司机就驾驶车,这个事件的乘客就是用户,司机就是webdriver,车轱辘就是浏览器
- 由于客户端脚本不能直接与浏览器通信,这时候可以把webService当作一个翻译器,它可以把脚本代码翻译成浏览器可以识别的代码,测试脚本创建一个session,在该session中通过http请求向webService发送restful的请求,webService翻译成浏览器可以识别的代码传给浏览器,浏览器把执行结果返回给webService,webService把结果做一个封装,然后返回给client,根据返回值就能判断浏览器的操作是不是执行成功
18. 元素定位
- id
- name
- class name
- tag name
- link text
- partial link text
- xPath
- css selector
19. selenium的优缺点
优点:
1.支持多平台、多浏览器、多语言去实现自动化测试
缺点:
1.加载效率低,容易造成阻塞
20. 网页突然加载不出来
- 网络断开了
- 后端页面无法加载
- 网页被劫持了
- DNS无法解析网址
- 服务器负载过大
- 供应商网络出口出现问题