测试
软件测试要知道的知识
软件测试的生命周期
需求分析 ——> 测试计划 ——> 测试设计、测试开发 ——> 测试执行 ——> 测试评估
bug的级别
- Blocker(崩溃) 造成系统崩溃、死机、死循环、导致数据库丢失、与数据库连接错误等问题
- Critical(严重) 系统主要功能丧失,数据库保存调用错误,用户数据丢失等但是不影响其他功能的测试
- Major(一般) 功能没有完全实现但是不影响使用,如操作时间长、查询耗时久等问题
- Minor(次要) 界面设计、性能缺陷、建议性问题
bug的生命周期
- new : 新发现的bug,为经评审决定是否要指派给开发人员进行修改
- open:确认是bug,并且认为需要修改,指派给相关开发人员
- rejected:如果认为不是bug,则拒绝修改
- delay:如果认为暂时不需要修改或者暂时不能修改,则延迟修改
- fixed:开发人员修改后表示成fixed状态,测试人员进行回归测试
- closed:修改状态的bug经测试人员回归测试后通过,则关闭bug
- reopen:如果回归测试验证bug仍然存在,则需要重新打开bug,开发人员重新修改
与开发人员产生争如何解决
- 先检查自身,是否bug描述不够准确,及bug的定级是否准确
- 站在用户的角度考虑,让开发人员尽量了解到bug可能会造成的不良结果
- 如果进过多轮沟通,开发人员仍不接受,可以发起bug评审 决定如何处理bug 分析缺陷产生的原因,找出预防的策略
敏捷开发的流程
敏捷开发有很多种,其中scrum是比较流行的一种
- 先由产品经理整理user story(用户故事),形成左侧的product backlog(产品代办事项)
- 发布计划会议:product owner(产品经理)负责讲解user story,对其进行评估和排序,发布计划会议的产出就是制定出一期迭代要完成的story列表,Spring backlog
- 迭代计划会议:项目团队对每个story进行任务分解,分解的标准是完成这个story的所有任务,每个任务都有明确的负责人,并完成工时的初评估
- 每日例会:每天scrum master(项目经理)召集站立会议,团队成员汇报昨天任务完成情况和今日计划,及遇到的问题
- 演示会议:迭代结束后,展开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果,期间记录大家的反馈记录,由product owner整理,形成新的story
- 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进
V模型和W模型
V模型
局限性:仅仅把测试作为在编码之后的一个阶段,没有在需要阶段就进入测试
W模型
特点:开发与测试并行进行,有利于尽早的发现问题
测试用例
测试用例是为了实施测试而向被测试的系统提供的一组集合,集合包括:测试环境、操作步骤、测试数据、预期结果等
测试用例的设计方法
- 等价类:依照需求将输入划分为若阁个等价类
需求:超市买水果
有效等价类:苹果、桃子、梨
无效等价类:青菜、大米、衣服
- 边界值:对输入输出的边界值进行测试
- 输入框长度为1-11,取边界值:0、1、11、12
- 运动员的参赛项目为1-3项,取边界值:0项、1项、3项、4项
- 查询面页面有999行,每50行一页,取边界值:输出0行、1行、50行、51行、999行、1000行
- 因果图:表明程序输入条件和输出动作之间的相互关系 恒等: 如果输入为真,那么输出就为真
与:
如果两个输入都为真,那么输出就为真
或:
如果输入中有一个为真,那么输出就为真
非:
只有输入为假,输出才为真
案例:
假设业务单据的处理规则为:“淘宝618活动,提单已提交,订单合计金额大于300元或有红包,则进入优惠”
- 对于本业务规则,首先通过分析所有可能的数据和可能的输出,得到以下结果: 输入:订单已提交、金额大于300、有红包 输出:优惠、不优惠
- 进行第二步,找出输入与输出之间的对应关系,通过分析可以看出以下对应关系 (1)订单已提交,订单金额大于300元,有红包,则优惠 (2)订单已提交,订单金额大于300元,无红包,则优惠 (3)订单已提交,订单金额小于等于300元,有红包,则优惠 (4)订单已提交,订单金额小于等于300元,无红包,不优惠 (5)订单未提交,不优惠
- 为了方便画出因果图和判定表,需要对所有输入和输出编号 c1:订单已提交 c2:订单金额大于300元 c3:有红包 e1:优惠 e2:不优惠
- 画出因果图
- 画判断表:有3个条件,输出有2个值,所以表的列数为2×2×2=8 最终的测试用例 1、2、3、4、5(包含6、7、8)
- 正交排列
- 场景设计:想象需求的场景来设计测试用例
- 错误猜测法:根据直觉找出有可能出现的错误,有针对性的设计测试用例
测试的分类
按开发阶段分
- 单元测试 测试阶段:编码后或编码前 测试对象:最小模块 测试方法:白盒测试 测试内容:模块接口测试,局部数据结构测试,路径测试,错误处理测试,边界测试
- 集成测试 测试阶段:单元测试之后 测试对象:模块间的接口 测试方法:黑盒测试+白盒测试 测试内容:模块之间的数据传输,模块之间的冲突,模块组装功能的正确性,全局数据结构
- 系统测试 测试阶段:集成测试之后 测试对象:整个系统 测试方式:黑盒测试 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
- 回归测试 回归测试指修改了代码后,重新进行测试以确认修改后没有引入新的错误
- 冒烟测试 一般在开发人员开发完毕后给测试人员进行测试时,测试人员会先进行冒烟测试,冒烟测试就是让产品运行起来,测试能否正常启动
- 验收测试 最后一个阶段的测试,确保产品准备就绪 测试阶段:系统测试之后 测试对象:整个系统 测试方法:黑盒测试 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性
按测试实施分
- α测试 α测试是由用户在开发环境下进行的测试
- β测试 β测试是由软件的最终用户在一个或多个场所进行测试
α测试和β测试的区别:
- 测试场所不同:α测试指用把用户请开发方的场地来测试,β测试是一个或多个用户在不同场所进行测试
- α测试的环境是受开发方控制的,用户数量较少,时间比较集中;β测试的环境是不受开发方控制的
- α测试先于β测试
- 第三方测试 介于开发方和用户之间的第三方测试
按是否运行分
- 静态测试 指不运行被测程序本身,通过分析源程序的语法、结构、过程等检查程序的正确性 代码静态分析和文档测试都属于静态测试
- 动态测试 指通过运行程序,检查运行结果和预期结果的差异,并分析运行效率,正确性
按是否手工分
- 手工测试 由手工一个一个去输入测试用例,然后观察结果 优点:思维发散,缺点:执行效率慢
- 自动化测试 简单说就是以人为驱动的测试行为转化为机器执行的一个过程
自动化测试步骤:
- 完成功能测试,版本基本稳定
- 根据项目特性,选择合适项目的自动化测试工具,并搭建环境
- 提取手工测试的测试用例转化为自动化测试的用例
- 通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
- 生成自动化测试报告
- 持续改进,脚本优化
按是否查看代码分
- 黑盒测试 也叫软件测试,把被测试软件当成一个黑盒子,不关心内部结构,只关心软件的输入和输出数据
- 白盒测试 基于代码的测试,需要打开盒子,研究里面的代码和执行结果
- 灰盒测试 是介于白盒测试和黑盒测试之间的一种测试,多用于集成测试阶段,不仅关心输入输出的正确性、同时要关注程序内部情况
selenium
selenium工具集
selenium 1(环境杀伤):seleniumRC(已被webdriver替代)、seleniumIDE(录制自动化测试脚本)、selenium GRID(分布式)
selenium 2:webdriver(Google)
selenium 3:增加了一些浏览器的原生驱动,safari(苹果),edge(微软)
webdriver
原理
浏览器相当于出租车,webdriver相当于司机,脚本相当于乘客
脚本(乘客)把指令传达给webdriver(司机),webdriver(司机)来根据指令驱动浏览器执行脚本命令(开车)
经常被问到的问题
请回答单元测试、集成测试、系统测试、验收测试、回归测试中哪步最重要
这些测试步骤分别在软件开发的不同阶段对软件测试,自认为对软件完整功能进行测试的系统测试很重要,因为此时单元测试和集成测试已完成,能够对软件所有功能进行测试,也能够覆盖系统所有联合的部件,能够验证系统全局是否满足需求规格的定义,因此系统测试很重要
回答集成测试和系统测试的区别,以及它们的应用场景
区别:
1、先后设计用例顺序不同:从w模型来讲,一般都是先设计系统测试计划用例,在设计集成测试
2、用例粒度不同:系统测试用例相对接近用户接受测试用例,集成测试用例比系统测试用例更详细,而且对于接口部分要重点设计
3、执行顺序不同:先执行集成测试,待到集成测试出现问题都修复后,再做系统测试应用场景
集成测试:完成单元测试之后,个模块联调测试,集中在个模块间连接的接口是否一致、各模块间的数据流和控制流是否按照设计实现其功能、以及结果的正确性验证等,可以是整个产品的集成测试,也可以是组合的大模块的集成测试;集成测试主要针对程序内部结构进行测试,特别是对程序模块之间的接口进行测试,测试方法一般选黑盒、白盒测试相结合
系统测试:针对整个产品的全面测试,即包含个模块的验证性测试和功能性测试,又包括对整个产品的健壮性、安全性、可维护性及各种性能参数的测试。做系统测试要严格按照《需求规格说明书》的标准,一般都使用黑盒测试
黑盒测试和白盒测试又哪些方法
黑盒测试方法有:等价类划分,边界值分析,错误推测,因果图法
白盒测试方法有:逻辑覆盖法,程序插桩法,基本路径法,符号测试,错误驱动测试
请说一说黑盒与白盒的测试方法
黑盒测试:
主要着眼于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序的所有错误。对于测试用例,不仅要测试所有合法的输入,而且还要对那些不合法但是可能出现的输入情况进行测试。常用的黑盒测试方法:等价类划分法,边界值分析法,因果图法,场景法,正交实验设计法,判定表驱动分析法,错误推测法,功能图分析法
白盒测试:
也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证,白盒测试法检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,仍然有可能存在错误,因为穷举路径测试无法检查出程序本身是否违反了设计规范
白盒测试需要遵循的原则有:1. 保证一个模块中的所有独立路径至少被测试一次;2. 所有逻辑值均需要测试真与假两种情况;3. 检查程序的内部数据结构,保证其结构的有效性;4. 在上边界及可操作范围内运行所有循环
常用白盒测试方法:
静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的思维优势,也可以借助软件工具自动进行
动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析
白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:
1.语句覆盖每条语句至少执行一次
2.判定覆盖每个判定的每个分支至少执行一次
3.条件覆盖每个判定的每个条件应取到各种可能的值
4.判断/条件覆盖同时满足判定覆盖条件覆盖
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次
6.路径覆盖使程序中每一条可能的路径至少执行一次
请说一下手动测试与自动化测试的优缺点
手工测试优点:
1、测试人员具有经验和对错误的猜测能力
2、测试人员具有审美能力和心理体验
3、测试人员具有是非判断和逻辑能力
手工测试缺点:
1、重复的手工回归测试,代价太大,容易出错
2、依赖于软件测试人员的能力
自动化测试优点:
1、对程序的回归测试更方便,这可能是自动化测试最主要的任务,特别是在程序修改比较频繁时,效果更明显。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,大大提高测试效率
2、可以运行更多更繁琐的测试,可以在较短的时间内运行更多的测试
3、可以执行一些手工测试困难或不可能进行的测试。比如,模拟大量用户同时访问操作
4、更好的利用资源,将繁琐的任务自动化,可以提高准确性,也可以让测试人员有更多的精力设计更好的测试用例。
5、自动化测试具有一致性和可重复性,每次测试的结果和执行的内容一致性可以保障
6、测试的复用性,由于自动测试通常采用脚本技术,这样就有可能只需要做少量的修改,实现在不同测试过程中使用相同的用例
自动化测试缺点:
1、不能取代手工测试
2、手工测试比自动化测试发现的缺陷更全面
3、对测试质量的依赖性极大
4、测试自动化不能提高有效性
5、自动化测试可能会制约软件开发,由于自动测试比手动测试更脆弱,所有维护会受到限制,从而制约软件的开发
6、工具本身不具备思维发散能力
测试项目具体工作是什么
搭建测试环境
撰写测试用例
执行测试用例
写测试计划,测试报告
测试,并提交bug表单
跟踪bug修改情况
执行自动化测试,编写脚本,执行,分析,报告
进行性能测试,压力测试等其他测试,执行,分析,调优,报告
测试用例的边界
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法
常用的边界值
- 对16-bit的整数而言,32767和-32768是边界
- 屏幕上光标在最左上、最右下位置
- 报表的第一行和最后一行
- 数据元素的第一个和最后一个
- 循环的第0次、第1次和倒数第2次、最后一次
软件质量的六个特征
- 功能特征:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能
- 可靠特性:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性
- 易用特性:由一组规定或潜在用户为使用软件所需作的努力和所作的评价有关的一组属性
- 效率特性:在规定条件下软件的性能水平与所使用的资源量之间关系有关的一组属性
- 可维护特性:与进行指定的修改所需的努力有关的一组属性
- 可移植特性:与软件从一个环境转移到另一个环境的能力有关的一组属性
详谈设计测试用例的方法
黑盒测试
- 等价类划分 等价类划分是将系统的输入域划分为若干部分,然后从每部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类,设计测试用例时两种都要考虑
- 边界值分析法 边界值分析法是对等价类划分的一种补充,边界值分析法就是假定大多数错误出现在输入条件的边界上,边界值分析法是通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类更有效的进行测试,因此该方法要和等价类划分法结合使用
-正交试验法
正交是从大量的试验点中挑选出适量的、有代表性的点。正交试验设计是研究多因素多水平的一种设计方式,它是一种基于正交表的高效率、快速、经济的试验设计方法
-状态迁移法
状态迁移法是对一个状态在给定的条件内能够产生需要的状态变化,状态迁移法是设计足够的用例达到对系统状态的覆盖、状态、条件组合、状态迁移路径的覆盖
-流程分析法
流程分析法主要针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,这是从白盒测试中路径覆盖分析法借鉴来的一种重要方法
-输出域分析法
输出域分析法是对输出域进行等价类和边界值分析,确定是要覆盖的输出域样点,反推得到应该输入的输入值,从而构造出测试用例
-判定表分析法
判定表是分析和表达多种输入条件下系统执行不同动作的工具,他可以把复杂的逻辑关系和多种条件组合的情况表达的即具体又明确
-因果图法
因果图是用于描述系统输入输出之间的因果关系、约束关系。因果图的绘制过程是对被测系统的外部特征建模过程,根据输入输出的因果图可以得到判定表,从而规划处测试用例
-错误猜测法
错误猜测法主要是针对系统对于错误操作时对于操作的处理法的猜测法,从而设计测试用例
-异常分析法
异常分析法是针对系统有可能存在的异常操作,软硬件缺陷引起的故障进行分析,分析发送错误时系统对于错误的处理能力和恢复能力依次设计测试用例
APP性能测试的指标
1、内存:内存消耗测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性。当然关于内存测试,在这里我们需要引入几个概念:空闲状态、中等规格、满规格
空闲状态指打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲;中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短
内存测试中存在很多测试子项:
空闲状态下的应用内存消耗,中等规格转态下的应用内存消耗,满规格状态下的应用内存消耗,应用内存峰值,应用内存泄漏,应用是否常驻内存,压力测试后的内存使用
2、CPU:
使用Android提供的view plaincopy在CODE上查看代码片派生到我的代码片adbshell dumpsys CPUinfo | grep packagename >/ address/CPU.txt来获取;使用top命令view plaincopy在CODE上查看代码片派生到我的代码片adbshell top | grep packagename >/ address/CPU.txt来获取。
3、流量:
网络流量测试是针对大部分应用而言的,可能还要部分应用会关注网速、弱网之类的测试
流量测试包括以下测试项:
应用首次启动流量提示;
应用后台连续运行2小时的流量值;
应用高负荷运行的流量峰值;
4、电量
- 测试手机安装目标APK前后待机功耗有无明显差异
- 常见使用场景中能够正常进入待机,待机电流在正常范围内
- 长时间连续使用有无异常耗电现象
5、启动速度
第一类:首次启动——应用首次启动所花费的时间
第二类:非首次启动——应用非首次启动花费的时间
第三类:应用界面切换——应用界面内切换所花费的时间
6、滑动速度、界面切换速度
7、与服务器交互的网路速度
当PC网路故障时,如何排除障碍
- 首先排除解除故障,即确保网线是可以正常使用的,然后禁用网卡后再启用,排除偶然故障。打开网络与共享中心窗口,单击窗口左上侧"更改适配器设置"右击其中的"本地连接"或"无线网路连接",单击快捷菜单的"禁用"命令,即可禁用所选网路,接下来再重启网络,查看
- 使用 Ipconfig 查看计算机的上网参数 1、单击"开始 | 所有程序 | 命令提示符",打开cmd窗口 2、输入ipconfig,按 Enter 确认,可以看机器的配置信息,输入 ipconfig/all 可以看到IP地址和网卡物理地址等相关网络详细信息
- 使用ping命令测试网络的连通性,定位故障范围 在cmd中输入"ping 127.0.0.1",数据显示本机分别发送和接受的4个数据包,如丢包率为零可判断本机网路协议工作正常,如显示"请求超时"则表明本机网卡的安装或TCP/IP协议有问题,接下来就应该检查网卡和TCP协议,卸载后重装
- ping本机IP 在确认127.0.0.1地址能被ping通的情况下,继续使用ping命令测试本机的IP地址能否被ping通,如不能,说明本机的网卡驱动程序不正确,或者网卡与网线之间连接有故障,也有可能是本地的路由表面收到了破坏,此时应检查本机网卡状态是否为已连接,网络参数是否设置正确,如果正确但不能ping通,就应该重新安装网卡驱动程序。丢失率为零,可以判断网卡安装配置没有问题
- ping网关 网关地址能被ping通的话,表明本机网络连接以及正常,如果命令不成功,可能是网关设备存在问题,也可能是本机上网参数设置有误,检查网络参数
web测试和app测试的不同点
系统架构方面:
web项目一般都是b/s构架,基于浏览器
app项目则是c/s,必须要有客服端,用户需要安装客户端
web项目只要更新服务端,客服端就会同步更新
app项目则需要客户端和服务端都更新
性能方面:
web页面主要关系响应时间
app则还需要关心流量、电量、CPU、GPU、Memory等等
兼容方面:
web基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向兼容
web不必考虑客户端的安装卸载
app测试则还要看分辨率,屏幕尺寸,还有看设备系统
而app是客户端,则必须测试安装、更新、卸载。除了常规的安装,更新,卸载还要考虑到异常场景,包括安装时的中断、弱网、安装后删除安装文件
如何测试网络协议
主要包括四种类型的测试:
一致性测试:检测协议实现本身与协议规范的符合程度
互操作性测试:基于某一协议检测不同协议实现间互操作互通信的能力
性能测试:检测协议实现的性能指标,比如数据传输速度、连接时间、执行速度、吞吐量、并发度
健壮性测试:检测协议在现在各种恶劣环境下运行的能力,比如注入干扰报文,通信故障,信道被切断
版权归原作者 相鱼南故 所有, 如有侵权,请联系我们删除。