软件测试的最基本原则:尽早地和不断地进行软件测试(尽可能多的创造软件中的Bug)
根据测试方法划分:黑盒测试、白盒测试、灰盒测试
黑盒测试,指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的构造是什么样子的,只关心软件的输入数据和输出结果。

它只检讨程序功能是否按照需求规格解释书的规定正常利用,程序是否能适当地吸收输入数据而产生精确的输出信息。黑盒测试着眼于程序外部构造,不考虑内部逻辑构造,紧张针对软件界面和软件功能进行测试。
采取黑盒技能设计测试用例的方法有:等价类划分、边界值剖析、缺点推测、因果图和综合策略。
白盒测试:白盒测试,指的是把盒子盖子打开,去研究里面的源代码和程序结果。
它是按照程序内部的构造测试程序,通过测试来检测产品内部动作是否按照设计规格解释书的规定正常进行,考验程序中的每条通路是否都能按预定哀求精确事情 。
灰盒测试:灰盒测试介于黑盒测试与白盒测试之间。
可以这样理解,灰盒测试关注输出对付输入的精确性,同时也关注内部表现,但这种关注不象白盒那样详细、完全,只是通过一些表征性的征象、事宜、标志来判断内部的运行状态,有时候输出是精确的,但内部实在已经缺点了,这种情形非常多,如果每次都通过白盒测试来操作,效率会很低,因此须要采纳这样的一种灰盒的方法。
根据测试流程/开拓阶段划分:
单元测试(Unit Test):单元测试是对软件中的基本组成单位进行的测试。目的是考验软件基本组成单位的精确性。
集成测试(Integration Test):集成测试是在软件系统集成过程中所进行的测试。目的是检讨软件单位之间的接口是否精确。
系统测试(System Test):系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的精确性和性能等是否知足其规约所指定的哀求。
验收测试(Acceptance Test):验收测试是支配软件之前的末了一个测试操作。验收测试的目的是确保软件准备就绪,向软件购买都展示该软件系统知足其用户的需求。
单元测试阶段:模块接口测试: 通过所测模块的数据流进行测试。调用所测模块时的输入参数与模块的形式参数的个数、属性和顺序是否匹配。
局部数据构造测试: 局部数据构造是为了担保临时存储在模块内的数据在程序实行过程中完全、精确,模块的局部数据构造每每是缺点的根源。
路径测试: 对模块中主要的实行路径进行测试。
缺点处理测试: 比较完善的模块设计哀求能遇见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,担保其逻辑上的精确性。
边界条件测试: 软件常常在便捷上失落效,边界条件测试是一项根本测试,也是后面系统测试中的功能测试的重点。
集成测试阶段:在集成测试中,我们紧张关注以下内容:
1. 把各个模块连接起来时,穿越模块接口的数据据是否会丢失。
2. 各个了模块组合起来,能否达到预期哀求的功能。
3. 一个模块的功能是否会对另一个模块的功能产生不利影响。
4. 全局数据据构造是否有问题。
5. 单个模块的偏差积累起来是否会被放大,从而达到不可接管的程序。
系统测试阶段:一样平常系统的紧张测试事情都集中系统测试阶段。根据不同的系统,所进行的测试种类大概多,例如:
功能测试:功能测试是对产品的各功能进行验证,以检讨是否知足需求的哀求。
性能测试:性能测试是通过自动化测试工具仿照多种正常、峰值以及非常负载条件来对系统的各项性能指标进行测试。
安全测试:安全测试检讨系统对造孽入侵的戒备能力。
兼容测试:兼容性测试紧张是测试系统在不同的软硬件环境下是否能够正常的运行。
(add by candy)
常日系统测试阶段还包含确认测试,确认测试包含:功能测试(有效性测试)、软件配置复查、Alpha Test、Beta Test。
α测试是由一个用户在开拓环境下进行的测试,也可以是公司内部的用户在仿真实际操作环境下进行的测试。这是在受掌握的环境下进行的测试。α测试的目的是评价软件产品的FURPS【即功能(function)、易用性(usability)、可靠度(reliability)、性能(performance)及可支持性(supportability)】。尤其看重产品的接口和特色。
β测试是由软件的多个用户在一个或多个用户的实际利用环境下进行的测试。与α测试不同的是,开拓者常日不在测试现场。因而,β测试是在开拓者无法掌握的环境下进行的软件现场运用
验收测试阶段:功能确认测试
安全可靠性测试
兼容性测试
易用性测试
可扩充性测试
资源占用率测试
用户文档资料验收
根据测试的侧重划分:功能测试与性能测试
功能测试: 功能测试检讨实际的功能是否符合用户的需求。
功能测试又可以细分为很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。
功能测试(function testing):是在规定的一段韶光内运行软件系统的所有功能,以验证这个软件系统有无严重缺点。
易用性测试(usability testing):可利用性测试(易用性测试)紧张从利用的合理性和方便性等角度对软件系统进行检讨,创造认为成分或利用上的问题。
安装测试(installation testing):安装测试的目的不是找软件缺点,而是找安装缺点。
兼容性测试(compatibility testing):这类测试紧张想验证软件产品在不同版本之间的兼容性。有两类基本的兼容性测试:向下兼容(测试软件新版本保留它早期版本的功能)和交错兼容(验证共同存在的两个干系但不同的产品之间的兼容性)。
规复测试(recovery testing):规复测试是要证实在战胜硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地连续进行事情,并不对系统造成任何危害。为此,可采取各种人工干预的手段,仿照硬件故障,并由此检讨:
① 缺点探测功能——系统能否创造硬件失落效或故障;
② 能否切换或启动备用的硬件;
③ 在故障发生时能否保护正在运行的作业和系统状态;
④ 在系统规复后能否从最后记录下来的无缺点状态开始连续实行作业等。
如果系统的规复是自动的(由系统自身实行),则应对重新初始化、数据规复、重新启动等逐个进行精确性评价。如果规复须要人工干预,就须要对规复的均匀韶光进行评估以剖断它是否在许可的范围之内。
文档测试(documentation testing):这种测试是检讨用户文档(如用户手册)的清晰性和精确性。确保阐述精确无误。
可支持性测试(supportability testing):这类测试是要验证系统的支持策略对付公司与用户方面是否切实可行。它所采取的方法是试运行支持过程(如对有错部分打补丁的过程,热线界面等),对其结果进行质量剖析,评审诊断工具、掩护过程、内部掩护文档;衡量修复一个明显缺点所需的均匀最少韶光。还有一种常用的方法是,在发行前把产品交给用户,向用户供应支持做事的操持,从用户处得到对支持做事的反馈。
互连测试(interoperability testing):互连测试是要验证两个或多个不同的系统之间的互连性。这类测试对支持标准规格解释,或承诺支持与其他系统互连的软件系统有效。
性能测试:性能测试是通过自动化的测试工具仿照多种正常、峰值以及非常负载条件来对系统的各项性能指标进行测试。
性能测试是相对功能测试来说的。它们之间最实质的差异便是:对系统的处理能力是否够成压力。如果一个用户的一个操作(比如超大数据量的查询)对系统够成了压力,也可以视其为性能测试。
软件的性能包括很多方面,紧张有韶光性能和空间性能两种。
韶光性能:紧张是指软件的一个详细的相应韶光。比如一个登录所须要的韶光,一个交易所须要的韶光等。
空间性能:紧张指软件运行时所花费的系统资源,比如硬件资源,CPU、内存,网络带宽花费等。
性能测试(狭义)
性能测试方法是通过仿照生产运行的业务压力量和利用场景组合,测试系统的性能是否知足生产性能哀求。普通地说,这种方法便是要在特定的运行条件下验证系统的能力状态。(理解为how much and how fast)
特点:
1、这种方法的紧张目的是验证系统是否有系统流传宣传具有的能力。
2、这种方法要事先理解被测试系统经典场景,并具有确定的性能目标。
3、这种方法哀求在已经确定的环境下运行。
也便是说,这种方法是对系统性能已经有理解的条件,并对需求有明确的目标,并在已经确定的环境下进行的。
负载测试(Load Test)
通过在被测系统上不断加压,直到性能指标达到极限,例如“相应韶光”超过预定指标或某种资源已经达到饱和状态。(理解为how much)
也便是说,这种方法是对一个别系持续不段的加压,看你在什么时候已经超出“我的哀求”或系统崩溃。
Load Test = Large amount of users
特点:
1、这种性能测试方法的紧张目的是找到系统处理能力的极限。
2、这种性能测试方法须要在给定的测试环境下进行,常日也须要考虑被测试系统的业务压力量和范例场景、使得测试结果具有业务上的意义。
3、这种性能测试方法一样平常用来理解系统的性能容量,或是合营性能调优来利用。
压力测试(Stress Test 强度测试)
压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和利用情形下,系统能够处理的会话能力,以及系统是否会涌现缺点
也便是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。
Stress Test = Too many users, too much data, too little time and too little room
特点:
1、这种性能测试方法的紧张目的是检讨系统处于压力性能下时,应有的表现。
2、这种性能测试一样平常通过仿照负载等方法,使得系统的资源利用达到较高的水平。
3、这种性能测试方法一样平常用于测试系统的稳定性。
配置测试(Configuration Test)
配置测试方法通过对被测系统的软\硬件环境的调度,理解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
特点:
1、这种性能测试方法的紧张目的是理解各种不同成分对系统性能影响的程度,从而判断出最值得进行的调优操作。
2、这种性能测试方法一样平常在对系统性能状况有初步理解后进行。
3、这种性能测试方法一样平常用于性能调优和方案能力。
也便是说,这种测试关注点是“微调”,通过对软硬件的不段调度,找出这他们的最佳状态,使系统达到一个最强的状态。
可靠性测试(Reliability Test)
在给系统加载一定业务压力的情形下,使系统运行一段韶光,以此检测系统是否稳定。
也便是说,这种测试的关注点是“稳定”,不须要给系统太大的压力,只要系统能够长期处于一个稳定的状态
特点:
1、这种性能测试方法的紧张目的是验证是否支持长期稳定的运行。
2、这种性能测试方法须要在压力下持续一段韶光的运行。(2~3天)
3、测试过程中须要关注系统的运行状况。
容量测试(Volume Test)
是通过测试预先剖析出反响软件系统运用特色的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有涌现任何软件故障或还能保持紧张功能正常运行。
Volume Test = Large amounts of data
并发测试
并发测试方法通过仿照用户并发访问,测试多用户并发访问同一个运用、同一个模块或者数据记录时是否存在去世锁或其者他性能问题。
也便是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。
特点:
1、这种性能测试方法的紧张目的是创造系统中可能隐蔽的并发访问时的问题。
2、这种性能测试方法紧张关注系统可能存在的并发问题,例如系统中的内存泄露、线程锁和资源争用方面的问题。
3、这种性能测试方法可以在开拓的各个阶段利用须要干系的测试工具的合营和支持。
根据测试是否利用自动化工具划分:手工测试与自动化测试
手工测试:手工测试便是由人去一个一个的去实行测试用例,通过键盘鼠标等输入一些参数,查看返回结果是否符合预期结果。
(在目前的测试领域,手工测试仍旧是无法替代的一种测试方法)
自动化测试: 自动化测试是把以人为驱动的测试行为转化为机器实行的一种过程。常日,在设计了测试用例并通过评审之后,由测试职员根据测试用例中描述的规程一步步实行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、韶光或硬件资源,提高测试效率,便引入了自动化测试的观点。
自动化测试是对手工测试的一种补充,由于很多数据的精确性、GUI、业务逻辑等都离不开测试职员的人工判断。
自动化测试:又可分为功能自动化测试与性能自动化测试。
我们一样平常所说的自动化测试便是指功能自动化测试,通过干系的测试技能,通过编码的办法用一段程序来测试一个软件的功能,这样就可以重复实行程序来进行重复的测试。如果一个软件一小部分发生改变,我们只要修正一部分代码,就可以重复的对全体软件进行功能测试。这样就大大的提高了测试效率。
性能自动化测试,除了早期阶段,现在的性能测试事情都是通过性能测试工具赞助完成的。能过工具可以仿照成千上万的用户向系统发送要求,用来验证系统的处理能力。
冒烟测试、回归测试、随机测试
这三种测试在软件功能测试过程中,既不算详细明确的测试阶段也不算是详细的测试方法。
冒烟测试(Smoke Test):
是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
引入到软件测试中,便是指测试小组在正规测试一个新版本之前,先投入较少的人力和韶光验证一个软件 的紧张功能,如果紧张功能都没有实现,则打回开拓组重新开拓。这样做的好处是可以节省大量的韶光本钱和人力本钱。
回归测试(Regression Test):
回归测试是指修正了旧代码后,重新时行测试以确认修正后没有引入新的缺点或导致其他代码产生缺点。
回归测试一样平常是在进行软件的第二轮测试开始的,验证第一轮中创造的问题是否得到修复。当然,回归也是一个循环的过程,如果回归的问题通不过,则须要开拓职员修正后再次进行回归,直到通过为止。
随机测试(Ad-hoc test):
是指测试中的所有输入数据都是随机天生的,其目的是仿照用户的真实操作,并创造一些边缘性的缺点。
随机测试可以创造一些暗藏的缺点,但是也有很多缺陷,比如测试不系统,无法统计代码覆盖率和需求覆盖率,创造的问题难以重现。一样平常是放在测试的末了实行。实在随机测试更专业的升级版叫 探索性测试。探索性测试可以说是一种测试思维技能。它没有很多实际的测试方法、技能和工具,但是却是所有测试职员都该当节制的一种测试思维办法。探索性强调测试职员的主不雅观能动性,抛弃繁杂的测试操持和测试用例设计过程,强调在碰到问题时及时改变测试策略。探索性测试该当是未来测试领域的一个方向。
安全性测试(Security Test): 安全测试是在IT软件产品的生命周期中,特殊是产品开拓基本完成到发布阶段,对产品进行考验以验证产品符合安全需求定义和产品质量标准的过程。安全测试也在越来越受到企业的关注和重视,由于由于安全性问题造成的后果是不可估量的。尤其对付互联网产品最随意马虎遭受各种安全攻击。
场景测试(Scenario Test):针对用户需求内容的测试,称之为场景测试;场景测试首先在系统测试阶段测试通过,然后在用户确认阶段,由用户实行场景测试来进行产品验收。
要做到场景测试,实际上须要从需求开始做起,需求与用户沟通,确认用户的实际场景,然后剖析这些场景,并据此设计出产品的办理方案,得到用户利用产品的运用处景,并排列出优先级;然后开拓根据场景优先级开拓出产品;末了测试根据场景优先级进行测试,并结合软件实际情形,给出拓展场景,给出利用解释,推举给用户利用。
赞助功能测试(Accessibility test):软件赞助功能测试是指测试软件是否向残疾用户供应足够的赞助功
希望本文对你有所帮助~~如果对软件测试、接口测试、自动化测试、口试履历互换感兴趣可以私聊我或关注"大众年夜众号“特斯汀软件测试”。免费领取最新软件测试大厂口试资料和Python自动化、接口、框架搭建学习资料!
技能大牛解惑答疑,同行一起互换。