1.什么是软件测试
在规定的条件下对程序进行操作,以发现程序错误。
2.软件测试的目的
① 验证软件需求和功能是否得到了完整的实现
② 尽可能早的发现软件中的bug
③ 尽可能多的发现软件中的bug
④ 验证软件是否可以发布
⑤ 对软件的质量、性能、效率做出合理的评估
⑥ 预防用户使用可能出现的问题
⑦ 预防下个版本可能出现的问题
3.软件测试流程是什么?
步骤一:需求分析
步骤二:制定测试计划
步骤三:设计测试用例、编写测试用例
步骤四:实施测试(执行测试用例)
步骤五:提交bug,提交缺陷报告
步骤六:生成测试总结和报告
4.软件测试的八个原则
- 所有测试的标准都是建立在用户需求之上
- 始终保持“质量第一”的觉悟,当时间和质量冲突时,时间要服从质量
- 需求阶段应定义清楚产品的质量标准
- 软件项目一启动,软件测试就已经开始,而不是等程序写完,才开始进行测试
- 第三方进行测试会更客观,更有效
- 软件测试计划是做好软件测试工作的前提
- 测试用例是设计出来的,不是写出来的
- 对发现错误较多的程序段,应进行更深入的测试
5.编写测试用例有哪几种方法
正则表达式 等价类划分、边界值、因果图划分、场景法、正交法、错误推断法、随机、测试大纲
黑盒测试方法:
- 等价类划分
- 边界值分析法
- 错误猜测法
白盒测试方法:
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定条件覆盖
- 条件组合覆盖
- 路径覆盖
测试步骤:
6.测试的六条基本法则是什么
功能、可靠性、易用性、效率、可维护性、可移植性
7.如何确定一个问题是不是BUG?
对照需求规格说明书,不满足需求就是BUG
8.缺陷严重程度分别是什么
致命、严重、一般、轻微、建议
9.缺陷优先级有哪些?从高到低排列。
P1-P2-P3-P4-P5
10.如何设计测试用例
- 用例编号 唯一的编号。
- 用例标题 当前测试用例的用途
- 测试背景 这个用例属于哪个项目
- 前置条件 用例执行前应该满足哪些条件
- 重要级别 定义优先级,分为高低级别
- 测试数据 具体输入内容
- 测试步骤 每步做些什么
- 预期结果 需求文档要求结果
- 实际结果 实际输出结果
- 备注
11.alpha测试和beta测试的区别
- 测试时间不同:
Beta测试是软件产品完成了功能测试和系统测试之后,产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段。
alpha测试简称“α测试”,可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
- 测试的目的不同:
α测试的目的是评价软件产品的(即功能、局域化、可用性、可靠性、性能和支持)。尤其注重产品的界面和特色。α测试即为非正式验收测试。
Beta测试是一种验收测试,通过了验收测试,产品就会进入发布阶段。
- 测试人员及场所不同:
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,α测试不能由程序员或测试员完成。α测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。
Beta测试由软件的最终用户们在一个或多个客户场所进行。开发者通常不在Beta测试的现场,因Beta测试是软件在开发者不能控制的环境中的“真实”应用。
12.Bug的生命周期?
新建,提交,确认,分配,修复,验证,关闭
13.测试内容
1.接口测试
每个接口可能有多个输入参数,每个参数有 “典型值”、“边界值”、“异常值”之分,根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。 同时要观察是否有程序语句从来没有被执行过,特别留意函数体内的错误处理程序块。
2.路径测试
路径测试就是测试程序的流程路径,想遍历全部路径几乎是不可能的,不测试或者胡乱找几条路径测试却又不行,输入与对应的输出之间的路径是唯一的。由于接口测试时的输入要有代表性的,因此相应的路径也具有代表性,制定的路径测试检查表应该包括:数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理。
3.功能测试
功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望相同。有两种比较好的测试方法:等价划分法和边界值分析法,等价划分是指把输入空间划分为几个“等价区间”,在每个“等价区间”中只需要测试一个典型值就可以了;边界值测试法是对等价划分法的补充。除了典型值外还要用边界值作为测试用例。
4.健壮性测试
健壮性是指在异常情况下,软件能正常运行的能力。它有两层含义:(1)容错能力,容错性测试通常构造一些不合理的输入来引诱软件出错;(2)恢复能力,恢复测试重点考察系统能否重新运行、有无重要的数据丢失、是否毁坏了其它相关的软件硬件。
5.性能测试
性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考,有时人们关心测试的“绝对值” ,有时关心测试的“相对值” 。
6.用户界面测试
绝大多数软件拥有图形用户界面,图形用户界面的测试重点是正确性、易用性和视觉效果,在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。
7.信息安全测试
信息安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。主要有如下步骤:(1)为非法入侵设立目标、(2)邀请一些人扮演黑客,让他们想尽办法入侵系统,实现“目标”、(3)如果有人成功了,请他详述入侵的过程。
8.压力测试
压力测试也叫负荷测试,即获取系统能正常运行的极限状态。 主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。 压力测试的一个变种是敏感测试,敏感测试目的是发现什么样的输入可能会引发不稳定现象。
9.可靠性测试
可靠性是指在一定的环境下、给定的时间内、系统不发生故障的概率。软件可靠性测试可能会花费很长时间。 比较实用的办法是,让用户使用该系统,记录每一次发生故障的时刻。计算出相邻故障的时间间隔,注意要去掉非工作时间。然后统计出不发生故障的“最小时间间隔”、“最大时间间隔”和“平均时间间隔”。
10.安装/反安装测试
目前市面上有非常流行的、专门制作安装/反安装程序的一些工具,如Install Shelled。主要的测试工作是:(1)至少在标准配置和最低配置两种环境下测试;(2)如果有安装界面,应当尝试各种选项,如选择“全部”、“部分”、“升级”等。
14.测试过程
测试软件
一:jmeter: 纯java编写负载功能测试和性能测试开源工具, 支持接口自动化测试,录制、抓包、可进行压力测试(增加线程,考验服务器最大支持访问数)、弱网测试、添加请求、添加断言,查看断言、结果树,聚合报告,分析测试报告等
二:ant: 将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,并生成测试报告并发送
三:jenkins: Jenkins是一个开源CI服务器,基于Web访问,jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性,拥有大量的插件:这些插件极大的扩展了Jenkins的功能,持续集成工具,所有工作都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间和工作量;
四:monkey:它是Android SDK系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行。向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行稳定性测试。
五:charles: 1.抓包(http、https):设置手机HTTP代理、https charles也需要证书
六:selenium :web自动化测试框架(测试浏览器兼容性的自动化)selenium不支持桌面软件自动化测试。软件测试报告,和用例管理只能依赖第三方插件unittest优点:兼容更多的平台( Windows、Linux 、 Macintosh等)以及浏览器(火狐,IE,谷歌等)
七:appium:开源测试自动化框架,可用于原生,混合和移动Web应用程序测试
八:pytest:pytest是一个全功能的Python测试框架