1、什么是软件测试?

软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较的过程。

软件测试真的可以零基础学习吗(什么是软件测试)(1)

通俗的来讲,“软件测试”就是通过软件测试人员验证软件是否满足用户的需求。最终交付的产品是否和用户本来的需求一致,如果不一致,需要找出不一样的点提交给开发员进行修复改善,测试人员在测试过程中找出的问题统称为“Bug”

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

2、什么是Bug(软件错误)?

所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。

软件的Bug:狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。仅就狭义概念而言,软件出现Bug的原因有:

任何软件在发布时都不可能是绝对的零Bug。在软件过程管理中通行的CMM(能力成熟度模型)中规定的软件质量标准是(Bug个数/千行源码):

当且仅当,程序规格说明书(软件需求)存在并且合理,如果软件功能和软件规格说明书不相符合,我们就说是软件错误。当软件需求不存在,用户需求存在并且合理,软件功能和用户功能不相符合,就说明是软件错误;软件测试的阶段:整个软件开发的生命周期,需求阶段介入 验证需求的合理性和正确性。

3、软件测试与软件开发的区别?

①技能要求专业度:

软件研发:技能的要求专业度高,技能要求不广泛,需要极强的代码基础

软件测试:技能要求比较广泛,但是专业度不高,无硬性代码基础

②软件测试和软件调试

目的:软件测试就是验证软件是否实现了它应该实现的功能(需求)软件调试的目的是软件开发人员验证软件是否实现了“开发”想让软件实现的功能。

角色:测试是由开发人员(白盒测试)和测试人员共同完成,调试是由开发人员完成。

阶段:测试现在贯穿了整个软件开发的生命周期:

4、开发与测试中的需求是什么?

用户的期望和满足合同(文档,规则,标准)的规定所需要的条件和权限。软件需求是用户需求转换而来的,它是用户需求的细化,是用户需求的具体实现细节和规范。

软件测试真的可以零基础学习吗(什么是软件测试)(2)

用户需求比较粗略,直接实现会有困难,因为没有细节,所以需要软件需求把用户需求细节实现和规范,把用户需求变成一个具体的可实现的过程文档。

5、需求是软件测试的依据

验证需求,保证需求正确可实现,细化需求,从需求中提炼出一个一个的测试项。以用户登陆为例,阐述下整个过程:

软件测试真的可以零基础学习吗(什么是软件测试)(3)

软件测试人员如何深入了解需求? 答:从用户需求分析阶段就开始介入了解需求,站在用户的角度。

6、如何编写完整的测试用例

测试用例就是向被测试系统发起的一组集合,包含测试环境,测试数据,测试步骤,预期结果,(重要性、优先级、操作方式、标题等)

软件测试真的可以零基础学习吗(什么是软件测试)(4)

如图:测试点:用正确(已经注册)的账号和密码登陆知乎界面,登陆成功

测试用例:所测试的项目标题

测试环境:Chrome版本99.0.4844.51 PC端 Windows系统

测试数据:用户名:QingshengRuanjianCeshi 密码: *******

测试步骤:

预期结果:(操作完测试步骤后的结果)登陆成功

测试用例告诉我们测什么,怎么测,该测哪些

优点:衡量需求的覆盖率(测试用例和需求对比):复用性,借鉴意义; 可以用于回归测试; 防止遗漏测试需求。

7、软件开发的常见5个模型

软件开发的生命周期 : 需求分析一计划一 设计一 开发一 测试一 运行维护

软件测试真的可以零基础学习吗(什么是软件测试)(5)

(1)瀑布模型

瀑布模型在软件测试工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每一个阶段都只执行一次,因此是线性顺序的软件开发模式。

软件测试真的可以零基础学习吗(什么是软件测试)(6)

特点:阶段性强(强调开发的阶段性、强调早期计划及需求调查、强调产品测试),每一个阶段比较独立; 看重前期的需求分析和后期的测试

缺点:易串行有去无回,测试介入晚,导致项目前期的问题到后面才发现,失去了错误及时修正的机会、不支持项目频繁变动

(2)螺旋模型

适合于项目庞大,风险大,不是很明确项目,一个项目分多层小迭代。

软件测试真的可以零基础学习吗(什么是软件测试)(7)

特点:强调每一个迭代的测试质量和风险分析。适合风险比较大并且整个项目也比较庞大,每一个迭代做风险分析,讨论项目是否有价值继续。

缺点:风险管控人力物力投入很多,风险分析要求很高,需要投入专业人员,导致时间,项目支出成本费用比较高。风险对比对测试人员和开发人员要求比较高。

(3、4)迭代、增量模型

前置:4周时间开发 系统的A模块,B模块,C模块,D模块的功能

增量:

迭代:

特点是抗击风险能力强

(5)敏捷模型(常用)

注重和客户的沟通,整个研发团队有效沟通,注重产品的质量,注重产品规定的交付日期;(拥抱变化,客户可以在项目开发过程中改变需求)

敏捷开发周期很短(1~4周时间),团队研发人员少;

特点:重目标、重产出、轻文档、轻流程;

软件测试真的可以零基础学习吗(什么是软件测试)(8)

举例说明:Scrum流程:

角色解析:

8、软件测试人常用的测试模型

软件测试V模型:

软件测试真的可以零基础学习吗(什么是软件测试)(9)

特点: 每一个阶段独立性强;左边每一个阶段都是右边测试阶段的依据;和右边阶段每一个测试阶段一一对应。

缺点:编码后才进行测试;串行的过程,测试是在编码后有的,测试的介入比较晚导致前期的错误后期才发现,后期测试发现时,已经失去了错误及时纠正的最好时机。

软件测试W模型:又称双V模型

软件测试真的可以零基础学习吗(什么是软件测试)(10)

特点: 每一阶段独立性强;测试一开始就介入;可以保证前期的问题及时发现和纠正;测试和开发并行。

缺点:每一阶段都是串行的过程;一个阶段完了之后就进行下一个阶段。不适合需求频繁变更的项目,不支持敏捷(拥抱变化)开发。

9、软件测试的生命周期(软件测试流程)

需求分析——测试计划——测试设计/开发——测试执行——测试报告

软件测试真的可以零基础学习吗(什么是软件测试)(11)

10、如何正确的描述一个BUG

举例场景:注册功能,密码长度是8~18个字符,但输入1个字符时,也能注册成功

标题:注册时密码输入1位字符,提示注册成功

测试版本(代码提交版本号):代码版本号Qs1001

测试环境:Chrome浏览器 版本号96.0.4664.45(因为在不同测试环境问题出现的情况也不一样)

操作系统:Windows10,电脑品牌型号联想xx型号

测试数据:账号;qingshengceshi666@163.com、密码;1

测试步骤:测试数据和执行测试的详细步骤,方便为开发人员复现问题

(打开注册页面➦输入邮箱账户➦填写密码➦点击同意条款➦点击注册)

实际结果:注册成功

预期结果(需求期望的结果):注册成功注册失败,提示“密码长度不符合规则”BUG的级别,附件(截图,错误日志)BUG产生时的log日志,错误截图等附件:

描述BUG 的要素:测试环境,测试数据,测试步骤,预期结果,实际结果,附件(错误,错误日志),等级,标题

11、Bug的级别的划分与解析12、Bug的生命周期(附管理流程)

提问:当测试员发现一个Bug提交给开发员后修改,开发员通知测试员验证,但是测试员又复现了这个Bug,是哪些可能的原因引起的?

回答:测试环境不一样;开发人员理解不到位,没有修改成功;代码在开发人员修改之后未进行远程提交代码,测试人员用旧版本(有问题的代码)进行测试

软件测试真的可以零基础学习吗(什么是软件测试)(12)

13、测试员因为一个Bug和开发人员发生争执时该怎么处理?14、面试最喜欢问的问题:为什么选择软件测试这个岗位?

答:一名优秀的软件测试人员应具备良好的沟通能力,编程能力,学习能力,自动化开发能力,编写测试用例的能力。首先对于软件测试我非常感兴趣,我认为做一个十分优秀的测试人员也是非常不容易的;我学了点关于开发的技能, 能在以后作为一个专业的测试人员与开发人员沟通过程中会更容易点。其次现在一个软件产品的问世,也离不开软件测试,在平常的工作学习生涯中,我具有强烈的责任感和压力并且善于发现探索新事物,对日后的职业生涯肯定会有很大的促进作用。

,