概述
1.什么是软件测试?
(1)软件测试的定义
软件测试就是利用手工或测试工具按照测试方案和流程对产品进行功能或性能测试,简而言之,是为软件做“质检”。
(2)软件测试的意义
Case:【许霆恶意取款案】ATM出现故障,许霆面对飞来横财,狂喜之下选择取走不属于自己的17.5万人民币,最终被判5年有期徒刑。由于银行取款系统出错,没有及时找出bug,导致许霆面临这样人性的考验,改变了他的一生。许霆本人必然是有错的,假设没有这样的bug出现,他的一生可不可能是另外的样子呢?
软件出现bug可能会对我们的生活,工作产生毁灭性的影响。据统计,每年因软件bug而带来的经济损失高达600亿美元的损失。
因而,对一个软件进行全面的“质检”是一件极其严肃而重要的事情!
(3)软件测试的作用和目的
a.测试工作可以发现并修复软件中存在的缺陷,进而提升用户对软件的使用感受
b.测试工作可以记录软件使用过程中产生的一些数据,这些数据可以为产品经理等决策者提供依据
c.测试工作可以降低软件开发的风险
总结即,测试工作的目的就是通过尽可能少的人力、财力、物力来查找并解决软件中存在的缺陷,从而降低软件可能带来的风险。
2.软件测试的原则
- 测试证明软件存在缺陷:测试工作的主要内容是去证明软件存在缺陷,而非证明它没有缺陷!
- “没有错误便是一个好的软件产品”这是谬论:软件测试不仅仅是找出缺陷,还需确认软件的各项功能是否满足了用户需求。
- 不能执行穷尽测试:具体的测试操作不可能将每种情况都一一列出来,在测试中需要对情况进行分门别类,使得测试工作有终止的时候。
- 测试应当尽早介入:一般要避免在开发完成之后才开始执行测试,这样不利于尽早发现软件缺陷,修复bug的成本会很大。
- 测试操作依赖于特定的测试内容:例如游戏、电商就为不同的行业,它们需要开展不同的测试活动。
- 缺陷存在集群现象:对于一款软件而言,核心功能占比约为20%,但它暴露缺陷的可能性会更大,这便是缺陷集群现象;因而,在测试时我们需要花更多的时间去专门测试这些功能。
- 杀虫剂现象:不要过多的使用同一条测试用例对软件的功能点进行问题查找,要多方位地思考软件可能出错的地方。因为软件(开发人员)存在“抗性”,开发人员可能会想到测试人员会测试到这个功能点的哪些方面,从而避免出错。因而,测试人员需要发散思维,设计其他的测试用例去测试这个功能点有没有别的错误。
- 避免测试自己的软件:因为会带入主观的情绪而不能很好的发现问题所在
- 定义产品的质量标准:测试前必须明确定义好产品的质量标准
- 测试用例设计十分重要:测试用例设计决定了测试的有效性和效率
- 文件保留:注意保留测试设计和说明文档,并注意测试设计的可重用性
3.软件测试的级别
测试级别,可以理解为软件测试阶段,指的是软件开发过程中对整个过程的一个大的测试方向。通常情况下分为:需求测试->单元测试->集成测试->系统测试->验收测试。
(1)需求测试(Requirement Testing)
需求测试,就是对产品经理(PM)编写的用户需求,进行分析和细化,明确被测对象需要测试什么,形成可测试的内容。
(2)单元测试(Unit Testing)
单元测试,就是对一个小的功能模块、一个函数或者一个类来进行正确性检验的测试工作,是在与程序的其他部分相隔离的情况下进行的。
(3)集成测试(Integration Testing)
集成测试,就是将多个不同的模块集成起来作为一个整体进行测试,以便揭示它们之间在交互过程中的缺陷。
(4)系统测试(System Testing)
在拿到一个完整的产品后,对产品的功能、性能以及兼容性等方面进行测试,以便检查软件是否存在与系统规格说明书不符合或者矛盾的地方,验证系统的功能和性能是否满足需求说明书所指定的需求。
(5) 验收测试(Acceptance Testing)
验收测试,是产品发布之前所进行的软件测试活动,是技术测试的最后一个阶段,也称为交付测试。 验收测试的目的是确保产品准备就绪,并且可以让最终用户将其用于执行产品的既定功能和任务。
可以分为以下三种形式:
- 内测(Alpha测试):软件发布之前,由公司的软件测试人员在开发环境下执行的测试活动,开发者在测试人员身边,发现问题便及时解决。此版本的bug一般非常多。(测试环境是受控的)
- 公测(Beta测试):软件发布之前,由公司的非软件测试人员对软件进行测试,开发人员不在身边,发现问题由专人统一收集,再由开发人员进行修改。此版本的bug量相对较少。(测试环境是不受控的)
- UAT测试(User Acceptance Testing,也称Gamma测试):正式上线版本的候选版本,由客户派出熟悉业务的人员来使用软件,从而进行软件测试,鼓励测试人员进行破坏性测试,以充分暴露系统的设计和功能问题。此版本几乎没有bug。
4.软件测试的分类
(1)按开发阶段分类
单元测试-->集成测试-->系统测试-->验收测试
(2)按测试实施组织划分
开发方测试(需求实现者)-->用户测试(需求提出者)-->第三方测试(需求验证者)
(3)按测试技术划分
白盒测试:考察内部逻辑覆盖
黑盒测试:考察外部功能实现
灰盒测试:介于两者之间,比如集成测试阶段,
(4)按测试对象划分
桌面应用测试
B/S应用程序测试
移动端程序测试
(5)按测试手段划分
手工测试和自动化测试
静态测试和动态测试
(6)按测试类型划分
功能测试、性能测试、安全测试、兼容性测试、文档测试
Tips:还可以按其他许多类型划分;其他软件测试类型可分为:回归测试、monkey测试、冒烟测试、A/B测试
5.其他补充
a.单元测试:主要是由开发人员自己进行的测试,测试人员一般不会参与单元测试
b.功能测试:根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定他们满足设计需求
c.性能测试:包含负载测试、压力测试、稳定性测试等
d.安全测试:对软件产品进行测试以确保其符合产品安全需求和智联标准
e.兼容性测试:从软件本身的兼容性、不同平台下的兼容性、软件对运行设备的兼容性、软件互操作性
f.文档测试:针对软件产品的交付品,配套的文档类部件的测试
g.可靠性测试:软件和硬件的可靠性
h.易用性测试:是指测试用户在使用软件时是否感到方便,是否能保证用户使用体验的测试类型
i.本地化测试:针对软件的本地化版本实施的针对性测试
j.部署测试:也称安装测试,主要验证系统部署过程,并确保软件经过安装测试后可以正常使用
k.回归测试:软件功能修改后,对软件进行重新测试以确认修改没有应入新的错误或导致其他部分产生错误。
l.Monkey测试:也称搞怪测试。用随机、稀奇古怪的方式来操作软件,以测试系统的健壮性和稳定性
m.冒烟测试:用于确定代码中的更改会按预期运行,且不会破坏整个版本的稳定性
n.A/B测试:也称多版本测试,测试用户最喜欢、最能接受的系统版本
最后
以上就是愉快电源为你收集整理的软件测试的基本概念(一)1.什么是软件测试?2.软件测试的原则3.软件测试的级别4.软件测试的分类5.其他补充的全部内容,希望文章能够帮你解决软件测试的基本概念(一)1.什么是软件测试?2.软件测试的原则3.软件测试的级别4.软件测试的分类5.其他补充所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复