前言:
大家好,我是一菲,岁岁年年花相似,年年岁岁题不同。到了2020年的2月初了,还有1.2个月又到了每年找工作的金三银四季,这几天我翻阅资料和书籍,给大家搜集了软件测试分类和软件测试周期的内容,我个人认为我总结的是比较详细的,希望各位小伙伴们批评指正。希望今天的分享可以给朋友们能够带来帮助。

软件测试的分类:

一.按测试技术

1.黑盒测试

1.1、定义

在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。也被称为功能测试或者数据驱动测试。它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

1.2、黑盒测试优缺点

优点:a.容易实施,不需要关注程序内部的实现;b.更贴近用户的使用角度;

缺点:a.测试覆盖率较低,一般只能覆盖到代码量的40%;b.针对黑盒的自动化测试,复用率较低,维护成本较高。

1.3、黑盒测试主要测试内容

是否有不正确或遗漏的功能;

在接口上,输入是否能正确的接受?能否输出正确的结果?

是否有数据结构错误或外部信息访问错误?

性能上是否能够满足要求?

1.4、黑盒测试的主要设计方法

流程分析法

等价类划分法

边界值分析法

错误推测法

因果图法

正交试验分析法

状态迁移图法

流程分析法

2.白盒测试

2.1、定义

要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。也被称为结构测试或逻辑驱动测试。

2.2、主要逻辑单位

语句、条件、条件组合、分支、路径

2.3、白盒测试的优缺点

优点:

a、迫使测试人员去仔细思考软件的实现,理解原理

b、可以检测代码中的每条分支和路径

c、揭示隐藏在代码中问题

d、对代码的测试比较彻底

缺点:

a、代价有些高,需要测试人员有编程能力

b、无法检测代码中遗漏的路径和数据敏感性错误

c、不能直接验证需求的正确性

3、灰盒测试

介于黑盒测试与白盒测试之间的测试,既要像黑盒测试那样关注输出对于输入的正确性,同时也关注内容表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志判断内部的运行状态。

二. 按测试方法

1.静态测试

1.1、定义

静态测试是指无需执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率

1.2、其形式有程序员互查、小组组织查找、召开正式评审会审查

2.动态测试

动态测试是指通过运行被测程序,检查运行结果和预期结果的差异,并分析运行效率,正确性和健壮性等。也就是通过实际运行情况来评价程序的性能。

按测试执行方式

1.手工测试

由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。

更适用针对深度的测试和强调主观判断的测试。比如:众包测试和探索式测试

2.自动化测试

适用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。

3.手工测试和自动化测试的区别

按软件质量特征

1、功能测试

根据产品特性,操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。针对的问题主要是功能错误/遗漏,界面问题,性能错误,数据以及访问错误,初始化及终止错误。这里性能错误指的是软件本身的性能问题。

功能自动化测试主要的工具:QTP(基于关键字驱动),silkTest,Rational robot,selenium(开源针对web应用),Watir,sikuli(基于截图)

2、性能测试

验证软件系统的性能能够满足需求所需求的性能指标。性能测试一般分为负载测试,压力测试,稳定性测试。性能指标包括并发用户数(VU),每秒事物数(TPS),系统相应时间,设备性能。

性能测试工具:loadrunner,silkperformer,Jmeter,WebLoad等

web应用性能测试重点:静态性能评估,开发web应用时,基于一系列web应有页面性能优化的最佳实践对Web应用的页面进行静态分析,并给出评估结果的性能分析方法。业内有YSlow和PageSpeed两种主流的评判标准/工具,都是浏览器插件。

应用性能管理(APM)主要是提供给系统的实时监控以实现性能管理,故障管理的解决方案。

3、安全测试

对软件产品进行测试以保证软件符合产品安全需求和质量标准。测试通过模拟对软件系统的恶意行为来评估系统安全性的一种测试,是取得用户一种授权的一种***测试。

开放的web应用安全项目OWASP:http://www.owasp.org

安全测试工具:Appscan针对web应用的漏洞扫描工具,Webinspect,Nessus针对服务器主机类的漏洞扫描工具,Nmap端口嗅探的工具,MetaSploit***框架,Fortify针对白盒测试

4、兼容性测试

软件本身的兼容性,对历史版本的功能和数据进行兼容;不同平台的兼容,可能在多个平台上运行,需要考虑多个平台的验证;软件对运行设备的兼容性,不同的设备不同的软件表现;软件的互操作性,同一个厂商的不同软件在同一台设备可能会有相互操作。对于web应用,不同的浏览器之间的兼容,如IE,FireFox,Chrome,Opera等;不同操作系统,如window&Linux;不同品牌电脑如惠普等。对APP、小程序、公众号还存在手机品牌、系统Android&IOS等。

兼容性的测试工具:BrowserShots,BrowserSandbox

其他

1、回归测试

在软件功能修改后,对软件进行重新测试以确认修改没有引入新的错误或者导致其他部分产生错误,最适合实施自动化测试。可以针对模块进行回归测试。

2、冒险测试

用于确认代码中的更改会按照预期运行,且不会破坏整个版本的稳定性。针对全流程的一个关键业务的流程的验证。

3、monkey测试

用一些随机,稀奇古怪的方式来操作软件,以测试系统的健壮性和稳定性。andriod的sdk就有monkey测试的接口。

4、A/B测试

用于互联网行业,通过页面提供两个版本给用户使用并记录相关的用户行为数据,来确定更优化设计的一种测试方案。实施要点:多个方案并行实施,并用户数量达到一定的数量级;每次改动仅改动一个变量;按照某种规则进行优胜劣汰

测试的趋势和能力也一直在变化。测试人员现在被要求做更多的面向技术和流程方面的事情。测试现在不仅仅限制在找bug,而且有一个更广阔的工作范围,从项目开始阶段甚至需求还没正式定下来的时候就被需要,被安排工作。

测试也是标准化的。就像软件开发那样有生命周期一样,测试也有自己的生命周期。
关注微信公众号:程序媛一菲,下面这些硬核资源就是你的了,哇塞!
在这里插入图片描述
什么是生命周期?
“生命周期”这个简单的词是指从一个形式(状态)到另外一个形式(状态)的一系列的变化。这些变化可以发生有形或无形的事情上。每个实体都有生命周期,从开始到死亡/结束。

什么是软件测试生命周期
它是指测试流程,这个流程是按照一定顺序执行的一系列特定的步骤,去保证产品质量符合需求。在STLC流程中,每个活动都按照计划的系统的执行。每个阶段有不同的目标和交付产物。在STLC中每个组织有不同的阶段;但是基本的是一样的。

下面是软件测试的8个阶段:

1.需求阶段

2.计划阶段

3.分析阶段

4.设计阶段

5.实施阶段

6.执行阶段

7.总结阶段

8.结束阶段

1.需求阶段:
在这个阶段,是分析和学习需求的阶段。和其他团队一起头脑风暴,努力去查找需求是不是可测的。这个阶段帮助去辨认测试的范围。如果任何功能是不可测试的,及时沟通,做出一些减轻策略(减小风险)的计划。

2.计划阶段:
在实际场景中,测试计划是测试流程的第一步。在这个阶段我们辨别出哪些活动和资源能匹配测试目标。我们也努力去辨别测试指标,测试方法以及如何追踪这些指标。

计划的基础是什么?只有需求吗?
答案是NO。需求只是一种基础,然而还有其他2方面的因素影响测试计划。他们是:

3.分析阶段:
STLC定义“WHAT”被测试。一般地,我们通过需求文档、产品风险和其他测试依据去辨别测试条件。测试条件应该可以被追溯到需求。有很多因素可以影响测试条件的辨别:

测试的层次和深度

产品的复杂性

产品和项目风险

软件开发生命周期被涉及

测试管理

团队的知识和技能

相关干系人的可用性

我们应该努力用一种很详细的方式把测试条件写下来。例如,一个电子商务网站,你有一个测试条件为“用户应该可以支付”。或者你可以详细的描述为“用户应该可以通过信用卡,微信、支付宝等支付”。把详细的测试条件写下来最大的好处是可以提高测试覆盖率,因为测试用例就是通过这些测试条件写的,这些详情触发写出更多的测试用例。同时,也可以分辨出退出测试的标准,比如哪些条件决定可以终止测试。

4.设计阶段:
这个阶段都有“HOW”去测试。包括以下的任务:

详述测试条件。拆分测试条件为多个子条件去提供覆盖率。

辨别和获取测试数据

辨别和搭建测试环境

创建需求跟踪指标

创建测试覆盖指标

5.实施阶段:
这个阶段最主要的任务是创建详细的测试用例。测试用例的优先级以及哪些用例会成为回归测试的一部分。在最终决定测试用例之前,审核测试用例的正确性是非常重要的。同时在真正执行开始之前也不要忘了sign off(署名,比如新版本发布前的最终测试报告需要发送sign off报告)测试用例。如果你的项目设计自动化,分辨哪些用例适合自动化以及准备测试脚本。不要忘记审核。

6.执行阶段:
从名字可以知道,这个阶段是STLC的真正执行阶段。但在你执行之前,确保你的标准是和需求匹配的。执行测试用例,报bug如果有任何的不匹配。同时填写追踪指标去跟踪你的进度。

7.总结阶段:
这个阶段聚焦在检验标准和报告。依赖你的项目和干系人选择,你能决定是发日报还是周报等等。有不同的报告类型(日报,周报)你可以发送,但重点是,报告的内容是根据你发送对象的不同而变化的。如果项目经理属于测试背景的,那么他们对技术方面更感兴趣,因此在报告中包含技术方面的内容(用例的pass个数,fail个数,bug个数,严重bug等等)。但是如果你向更高层的干系人报告,他们可能对技术方面不感兴趣,可以给他们发送一些风险相关的,比如通过测试减轻风险的发生。

8.结束阶段:
这个阶段的任务包括:

检查测试的完成度。是否所有的用例被执行或是有意减轻一些。检查是否还有S1的bug是激活状态。
经验总结会议及书写相关文档。包括哪些做得好,哪些需要提高和如何提高
软件测试生命周期需要了解的内容:

a.问题定义及规划–讨论大体需求

b.需求分析-详细的分析,需求规格说明书(由产品经理写),需求评审会议。

c.软件设计

概要设计–主要架构的设计,表述各模块功能

详细设计–对概要设计中个模块进行深入分析
d.软件编码

e.单元测试

f.集成测试

g.系统测试-参考规格说明书中的需求测试

h.验收测试-用户验收测试

i.运行维护-纠错性和改进性维护,比如版本升级(修复bug或者新增功能)

j.软件生命周期模型

k.敏捷开发模型

m.瀑布模型

n.V模型

o.螺旋模型

p.W模型

写在最后:

经常有人在我们耳边说“付出不一定有回报”、“认真你就输了”,可是自己的人生都不认真面对,那谁还会认真地对待你呢?只有凡事认真的人,才会得到上天的眷顾。认真对待自己所选择的事业,并且全身心地投入,这是每一个成功者的必经之路,只有坚持到底,你才会看到身后被汗水灌溉后绽放的满路鲜花。“认真成为更好的自己,生活绝不辜负任何一个认真的你。”

未来的你一定会感谢今天拼搏的自己,认真的走好每一步,相信你终会到达你想要到达的地方。看完文章的小伙伴们别忘记举起你那可爱的小手点赞三连,您的点赞是我更文的不竭动力,笔芯。
软件测试的分类及生命周期,你了解多少?