简介:本文主要包含软件测试基本知识、数据库相关、常用命令、常见状态码、自动化测试以及常见的面试问题。希望可以给大家提供借鉴和共同学习的机会
一:基础测试知识
1.软件测试级别?
单元测试:单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。Findyou又称为模块测试,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。(测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试)
集成测试:(集成测试也称联合测试、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。主要目的是检查软件单位之间的接口是否正确。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
系统测试:将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
验收测试:验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。总结验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务,即软件的功能和性能如同用户所合理期待的那样。测试内容:同系统测试(功能...各类文档等)
2.软件测试类型?
功能测试:也叫黑盒测试,功能测试指测试软件各个功能模块是否正确,逻辑是否正确。对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。这种测试的目标是核实数据的接收、处理和检索是否正确,以及业务规则的实施是否恰当。此类测试基于黑盒技术,该技术通过图形用户界面(GUI) 与应用程序进行交互,并对交互的输出或结果进行分析,以此来核实应用程序及其内部进程。功能测试的主要参考为类似于功能说明书之类的文档。
性能测试:指验证软件的性能可以满足系统规格给定的指定要求的性能指标。性能测试是一个比较大的范围,可以进一步衍生出负载测试、强度测试、压力测试、稳定性测试。通过自动化测试工具模拟多种正常、异常、峰值条件,对系统各项性能指标测试
配置测试:用硬件来测试软件运行情况,1.软件在不同主机上运行的情况(Apple和Dell)2.在不同组件上运行情况(开发的拨号程序要测试不同厂商生产的Moden上运行情况)3.不同的外设、接口、内存的运行情况
强度测试:强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。这类测试往往可以书写系统要求的软硬件水平要求。实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷。而其他缺陷则可能由于争用共享资源(如数据库锁或网络带宽)而造成的。强度测试还可用于确定测试对象能够处理的最大工作量。
负载测试:通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预定指标或都某种资源已经达到饱和状态。负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。
压力测试:压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。测试出系统所能承受的最大极限。是指系统在极限下的压力情况,系统在什么样的压力下会导致系统得到失效,无法正常运行。100个用户连续访问1小时可以看做是压力测试,连续访问10小时可以认为是负载测试
稳定性测试:压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。一般是稍大于业务量的一个负载,对系统进行的一个持续的,长时间的测试,比如24*3,连续3天的施加压力,确定系统在较长运行时间的情况下,系统的稳定性情况
网络测试:wifi、4G、3G、不同运营商网络测试、
UI界面测试:UI测试指测试用户界面的风格是否满足客户要求,文字是否正确,页面美工是否好看,文字,图片组合是否完美,背景是否美观,操作是否友好等等。
分辨率测试:测试在不同分辨率下,界面的美观程度,分为800*600,1024*768,1152*864,1280*768,1280*1024,1200*1600大小字体下测试。一个好的软件要有一个极佳的分辨率,而在其他分辨率下也都能可以运行。
安装测试:安装测试有两个目的。第一个目的是确保该软件在正常情况和异常情况的不同条件下: 例如,进行首次安装、升级、完整的或自定义的安装_都能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。第二个目的是核实软件在安装后可立即正常运行。这通常是指运行大量为功能测试制定的测试。
内存测试:CPU测试、响应时间测试、唤醒率测试等,都属于性能测试。还有强度测试、容量测试、基准测试等。
文档测试:文档测试是检验样品用户文档的完整性、正确性、一致性、易理解性、易浏览性。包括用户手册、使用说明、用户帮助文档等
可靠性测试:这个主要是硬件方面的,比如高低温测试、防水防尘等测试
安全测试:对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。可确保只有具备系统访问权限的用户才能访问应用程序,而且只能通过相应的网管、关来访问。比如输入管理员账户,检查其密码是否容易猜取,或者可以从数据库中获得?
兼容测试:检查软件在不同软件、硬件平台是否可以正常运行。 主要查看在不同操作系统、浏览器、数据库、不同版本是否正常运行、向前兼容和向后兼容、、数据共享兼容
浏览器兼容性测试:测试软件在不同产商的浏览器下是否能够正确显示与运行、比如测试IE,Natscape浏览器
操作系统兼容性:测试软件在不同操作系统下是否能够正确显示与运行;比如测试WINDOWS98,WINDOWS 2000,WINDOWS XP,LINU, UNIX下是否可以运行这套软件?
硬件兼容性
测试与硬件密切相关的软件产品与其他硬件产品的兼容性,比如该软件是少在并口设备中的,测试同时使用其他并口设备,系统是否可以正确使用。比如在INTER,舒龙CPU芯片下系统是否能够正常运行?
并发测试:并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。
3.测试方法:动态测试、静态测试;黑盒测试、白盒测试、灰盒测试。
、黑盒测试方法:
1>等价类划分:等价类划分是将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类,设计测试用例的时候要考虑这两种等价类。
2>边界值分析法:边界值分析法是对等价类划分的一种补充,因为大多数错误都在输入输出的边界上。边界值分析就是假定大多数错误出现在输入条件的边界上,如果边界附件取值不会导致程序出错,
那其他取值出错的可能性也就很小。
边界值分析法是通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类来更有效的进行测试,因此该方法要和等价类划分法结合使用。
3>错误猜测法:错误猜测法主要是针对系统对于错误操作时对于操作的处理法的猜测法,从而设计测试用例
3、白盒测试方法:
1>语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一个可执行语句至少执行一次。
2>判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支至少经历一次。
3>条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支
4>判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。
5>条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。
6>路径覆盖:是每条可能执行到的路径至少执行一次
灰盒测试
定义:介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现
静态测试
1,静态测试是指无需执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率
动态测试
1,动态测试是指通过运行被测程序,检查运行结果和预期结果的差异,并分析运行效率,正确性和健壮性等
2,静态(看外观)和动态(发动车走一段路)可以用买车来说明
手工测试
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。
更适用针对深度的测试和强调主观判断的测试
比如:众包测试和探索式测试
自动化测试
1.适用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
2.手工测试和自动化测试的区别?
手动测试:优点:易发现缺陷、容易实施、灵活性 缺点:覆盖量低、重复测试效率低、可靠性低、人力资源依赖
自动化测试:优点:高效率,速度快、高复用性、覆盖率高、准确可靠、不知疲劳 缺点:机械发现缺陷率低、一次性投入大
安全测试
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。
Findyou觉现在对安全知识的普及,大家意识都提上来了。比如现在越来越多的不支持HTTP协议,转用HTTPS等。
探索性测试
探索性测试可以是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略
随机测试
随机测试主要是根据测试者的经验对软件进行功能和性能抽查。
根据测试说明书执行用例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。
随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例(TestCase)没有覆盖到的部分。
冒烟测试
关于冒烟测试,就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障。冒烟测试目的是确认软件基本功能正常,现基本执行对象为测试人员,在正规测试一个新版本之前,投入较少的人力和时间验证基本功能,通过则测试准入。
α测试
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。
大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试。α测试不能由程序员或测试员完成。
β测试
Beta测试是一种验收测试。Beta测试由软件的最终用户们在一个或多个客房场所进行。
4.alpha测试和beta测试的区别
1、测试时间不同:
Beta测试是软件产品完成了功能测试和系统测试之后,产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段。
alpha测试简称“α测试”,可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
2、测试的目的不同:
α测试的目的是评价软件产品的(即功能、局域化、可用性、可靠性、性能和支持)。尤其注重产品的界面和特色。α测试即为非正式验收测试。
Beta测试是一种验收测试,通过了验收测试,产品就会进入发布阶段。
测试人员及场所不同:
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,α测试不能由程序员或测试员完成。α测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。
Beta测试由软件的最终用户们在一个或多个客户场所进行。开发者通常不在Beta测试的现场,因Beta测试是软件在开发者不能控制的环境中的“真实”应用。
5.测试设计方法:
等价类划分、边界值、因果图划分、正交、场景、随机、错误推断、测试大纲
等价类划分法: : 1:有效等价类: 2:无效等价类:
案例:比如一个登陆输入框,规定只能输入中文,同时长度为6-10,
通过等价类设计测试用例:
测试用例中重要的三步: 输入 操作 预计结果 如果与预期结果不符合就是bug
有效等价类: 输入:输入长度为6的中文,输入的为王小明,这就是有效等价类
无效等价类:
1: 输入长度为4的中文,输入位小名,点击登录,预计结果长度不符合要求
2: 输入长度为6,但是是英文的,点击登录,预计结果 请输入中文
3: 输入长度为4,而且不是中文的,是数字,1234,点击登录,预计结果请输入中文并且长度为6-10位
4:输入长度为12而且不是中文的,比如qwertyuiopas,点击登录,预计结果请输入中文并且长度为6-10位
二:边界值法:
应用场景:边界值往往和等价类划分法一起使用,形成一套更为完善的测试方案,找到有效数据和无效数据的分界点,
注解边界值一般和有效等价类划分法配合使用:
案例:比如一个登陆输入框,规定只能输入中文,同时长度为6-10,
上面输入框的边界的:如果固定大于等于6,并且小于等于10,
那左边界就是 5和 6
右边界是:10 和 11
测试用例:
1:输入的为王小明,这就是有效等价类和边界值的结合使用
2:输入小名,这就是边界值为5,同时有效等价类
3:输入欧阳致远家,这就是边界值10,同时等价类有效
4:输入欧阳致远啦啦,这就是边界值为11,同时有效等价类
三:因果图及判定表法:
应用场景:在一个界面中有多个控件,如果控件之间有组合关系或者限制关系,不同的控件组合会产生不同的输入结果,为了弄清楚不同的输入组合会产生咋样的输出结果,可以使用因果图及判定表法:
判断是儿童还是青年还是成年人:
条件1:年龄 age
条件2:身高height
条件3:体重weight
输入年龄5,体重80公斤,身高170,查无此人
输入提高80,身高170,输入年龄20,成年人
输入年龄5,体重30,身高60,小孩
四:正交表:
应用场景:在一个界面中有多个控件,每个控件有多个取值,测试时考虑不同的控件不同取值之间的多种组合,但组合数量巨大(>20种,20种以下一般考虑判定表因果图),没有必要全部测试,如何从所有的组合中挑选最少、最优的组合进行测试,可以使用正交排列法。
正交表的测试思想特点:
1)使用每个控件的每个取值参与组合的次数是基本相等的(均匀的)
2)在所有的组合数据中,选取数据时,应该均匀的选取,而不能从局部选取。
3)如果时间允许,尽可能的多测一些组合
正交表:主要针对一个输入框里面可能有多个值,而且数量巨大
年龄 体重 省 市 县
比如:输入年龄 18,体重45,山西 大同 阳高
五:测试大纲法
适用场合:程序包含多个窗口,每个窗口中又有多个功能,这些功能之间又有一定的联系。为了梳理清楚窗口之间以及窗口不同功能之间的联系,使用测试大纲法。
六:场景法
适用场合:大多数的业务比较复杂的软件系统都适合使用场景法(便于将各个功能点串起来,便于形成完整的业务感觉)是一种基于软件业务的测试方法,把自己当成最终用户,尽可能的模拟用户在使用此软件的操作
案例:
场景一:比如买东西:输入袜子,点击查询,出现列表,点击七匹狼,点击进入详情,点击加入购物车,点击去购物车结算,点击收获地址,点击支付,支付成功
场景二:比如买东西:输入袜子,点击查询,出现列表,点击七匹狼,点击进入详情,点击加入购物车,点击去购物车结算,点击收获地址,点击取消支付
七: 错误推断法
基于经验和直觉推测程序中所有可能存在的各种错误 , 从而有针对性的设 计测试用例的方法
在进行灰盒测试的时候经常用到此方法
八:随机测试
随意测试,不考虑任何用例和需求,完全站在一个用户或者的角度对产品进行使用。
适用场景:
1) 所有之前设定的用例已经 执行完毕
2)海量的条件组合无法一遍 历的时候
6.软件测试风险:
测试人员:业务不熟、人员变动、疲态、同化效应、定位效应
测试材料:需求变更、质量标准不一样、测试用例或测试数据设计不充分
测试环境:测试软件版本不统一、软件环境不统一、硬件环境不统一、硬件不到位
测试时间:测试时间不足、测试时间延长
测试方法:错误或缺失测试方法、场景缺失、测试用例实施不充分
7.Android手机和IOS手机,系统有什么区别?
1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。
Android:一:兼容性测试,Android 从4.0版本的手机测试到9.0版本手机。二:各大品牌的手机都的进行测试,比如:小米小米9 小米8 小米7 小米6 note 红米系列 7红米5,华为: 华为mate20 华为mate10,华为荣耀: 荣耀10,9,8 ,vivo: x21,27,23,oppo: R7,R9,R11,三星手机: note9, 8,7 S9,8。三:稳定性测试: 使用monkey命令进行稳定性测试
ios:兼容性测试:ios版本测试从9-12,手机型号从4S测试到xmax
web端测试:兼容性测试:IE浏览器7-12,火狐浏览器 35-最新的,谷歌浏览器,(http、https)
8.Bug的生命周期?
新建,提交,确认,分配,修复,验证,关闭
9.软件的生命周期?
1.产品收集市场需求,2.需求分析,3.产品设计需求,4.UI界面设计,5.前后台开发,设计数据库表、框架,编码,6.版本测试,7.产品上线,8.产品运营
10.软件开发过程中的角色分工?
测试配合开发等进行需求分析和讨论,根据需求说明书指定《项目测试计划》,编写测试用例,建立测试环境。
测试负责新产品测试,原有产品的升级测试,负责软件问题解决过程跟踪,软件开发文档、开发工作的规范化,管理开发部 门的产品文档,制作用户手册、操作手册,产品上限测试,监督软件开发过程执行,提高软件质量。
11.缺陷(bug)等级分类?
致命:测试过程死机、系统崩溃、数据跌势、功能没有实现
严重:导致软件功能不稳定、功能实现错误、流程错误
一般:校验错误、罕见故障、错别字,不影响功能,影响体验
低级:没影响的小问题
12.使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程?
答:1) 测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,系统会自动通过Email通知项目组长或直接通知开发者。
2) 经验证无误后,修改状态为VERIFIED(已证实).待整个产品发布后,修改为CLOSED(关闭)
3) 还有问题,REOPENED(重新打开),状态重新变为“New",并发邮件通知。
4) 项目组长根据具体情况,重新分配给bug所属的开发者。
5) 若是,进行处理,断言并给出解决方法。(可创建补丁附件及补充说明)
6) 开发者收到Email信息后,判断是否为自己的修改范围。
7) 若不是,重新分配给项目组长或应该分配的开发者。
8) 测试人员查询开发者已修改的bug,进行重新测试。确认无误后,关闭该bug。
13.缺陷报告由哪些组成?(测试报告,测试用例)
缺陷编号、日期、缺陷标题、 缺陷优先程度、缺陷所属模块、缺陷所属版本、执行流程、预计结果、输出结果、缺陷分析、缺陷所属开发 人员、缺陷描述缺陷有限等级等。提高质量:要有效的发现 Bug 需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认肯定,然后再向外发布如此才能提高提交 Bug 的质量。
测试报告:项目说明 测试依据 人员及进度 测试概要 测试环境 测试用例 测试方法 覆盖分析 需求覆盖 测试覆盖
14.如何设计测试用例?
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。检验是否满足客户需求;度量测试人员的工作量;展现测试用例的思路。
测试用例包含:
用例编号 唯一的编号。
用例标题 当前测试用例的用途
测试背景 这个用例属于哪个项目
前置条件 用例执行前应该满足哪些条件
重要级别 定义优先级,分为高低级别
测试数据 具体输入内容
测试步骤 每步做些什么
预期结果 需求文档要求结果
实际结果 实际输出结果
备注
测试用例编写流程:需求分析--》提取测试点--》测试用例编写--》测试用例评审
测试用例常用设计方法:等价类划分法、 边界值分析法、因果图法、场景法、正交表、测试大纲法、错误推断法、随机测试