• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 软件测试基础知识汇总 初学者入门须知

发布时间:2019-09-02 11:48:41 浏览 5028 来源:博学谷资讯 作者:照照

    一个合格的软件测试师,除了要有团队协作能力和逻辑分析能力,最重要的就是具备扎实的软件测试基础知识。本文汇总了初学者必须学习的软件测试入门基础知识,希望对大家可以牢牢掌握。

     

    软件测试基础知识

     

    1、什么是软件测试?

     

    从广义上说,软件测试是软件生命周期中的所有检查、评审和确认工作,包括在分析、设计阶段,以及完成开发后确认阶段的各类文档、代码的审查和确认。从狭义上说,是识别软件缺陷的过程,即实际结果与预期结果不一致。

     

    2、软件测试的目标?

     

    最终目标是确保软件功能符合用户需求,在产品发布或交付前尽可能多的发现并改正缺陷。

     

    3、软件测试的原则?

     

    Good-enough原则。一种权衡投入/产出比的原则。保证测试的覆盖度,但穷举测试是不可能的。所有测试都应追溯到用户需求。越早测试越好,测试过程与开发过程应是相互结合的。测试的规模由小到大,从单元测试到系统测试。为了尽可能的发现错误,应由独立的第三方进行测试。不能为了便于测试擅自修改程序。既应该测试软件应该做什么,也应该测试软件不应该做什么。测试只是展示缺陷。测试只能表明有缺陷存在,但不能证明没有缺陷,测试能降低未发现缺陷留存的概率,却不能证明软件是绝对正确的。穷尽测试是不可能的。测试所有的输入和条件组合是不可能的,可以取而代之的是基于风险和优先级的测试。缺陷簇生。要对缺陷发生率高的模块投入更多的测试。少量的模块往往隐藏了大部分的缺陷。缺陷发生率高的模块往往与需求不清、设计不当、编码复杂度高等内在原因关联,所以从风险的角度来看必然较高。杀虫剂悖论。相同的测试再重复多次后就无法再找到缺陷了。测试用例要不断评审修改,不断添加新的和不同的测试,就有可能找到更多缺陷。测试是上下文关联的。测试在不同上下文环境中的执行是不同的。无错谬论。即使修改了系统中存在的大部分缺陷,但若系统本身背离了用户需求,那么发现和修复缺陷就毫无帮助了。

     

    4、软件测试的度量?

     

    测试覆盖率:有多少需求、代码已经被测试了。

     

    缺陷发现率:缺陷是何时被发现,且有多少缺陷已经被发现,缺陷可以根据严重性来分类,需要记录的数据有:缺陷数量、缺陷的严重等级等。

     

    测试成功率:有多少测试用例已经通过,且有多少运行正常的,需要记录的数据有:通过的测试用例数、未通过的测试用例数、已执行的测试用例数等。

     

    5、多少测试才足够?

     

    取决于风险程度(商业风险和技术风险)和项目约束条件(时间和经费)。

     

    6、调试和测试的区别?

     

    调试 for开发人员发现缺陷原因,修复代码并确认缺陷已经被修复;测试 for 测试人员识别缺陷。

     

    7、测试的主要步骤?

     

    计划与控制;分析与设计;实施与执行;评估出口准则和报告;测试结束活动。

     

    8、什么是回归测试?

     

    回归测试是指修改了旧代码后,重新测试以确认修改没有引入新的错误或导致其他代码产生错误。

     

    9、测试的标准是什么?

     

    测试的标准是用户的需求。

     

    10、为什么要避免测试自己的程序?

     

    测试自己的程序时,容易顺着编写代码时的思路进行测试,很少从其他角度思考,基于这种思维定势,就难以发现潜在的错误。
    由于心理因素,人们潜意识都不希望找到自己的错误。基于这种思维定势,人们难以发现自己的错误。一定程度的独立测试可以更加高效的发现软件缺陷和软件存在的失效。

     

    11、软件测试的要素有哪些?

     

    质量。软件质量是软件测试的目标,也是软件测试工作的中心。一切从质量出发,也就是一切从客户需求出发。任何违背质量的东西都是问题,测试就是要找出这些问题。

     

    人员。人是决定的因素,测试人员的态度、素质、能力决定着测试的效果,对测试产品的质量也有很大的影响。测试人员因素包括测试组织结构、角色和责任的定义。

     

    技术。软件测试技术,包括方法、工具。

     

    资源。主要是指测试环境中所需要的硬件设备、网络环境,甚至包括测试数据。另一个重要因素就是测试时间,时间也是测试的资源。

     

    流程。从测试计划和测试用例的创建、评审到测试的执行、报告,设定每个阶段的进出标准。

     

    12、什么是软件质量?

     

    软件特性的总和,软件满足规定或潜在用户需求的能力。

     

    13、软件测试与软件质量保证的区别?

     

    软件测试只是保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作。
    从性质上看,软件测试属于技术性工作,而软件质量保证属于管理型工作;从对象上看,软件测试的对象是软件产品,而质量保证的对象是整个软件过程,覆盖公司层面的各个领域;从手段上看,软件测试以事后测试检验为主,而软件质量保证则强调缺陷的预防。

     

    14、测试团队的基本责任?
    发现软件程序、系统或产品中所有的问题,尽早的发现问题。督促和协助开发人员尽快地解决程序中的缺陷,帮助项目管理人员制定合理的开发计划。对缺陷进行跟踪、分析和分类总结,以便让项目的管理人员和相关的负责人员能够及时、清楚地了解产品当前的质量状态
    帮助改善开发流程、提高产品开发效率。促进程序编写的规范性、易读性、可维护性等。

     

    15、什么是缺陷发现率(DDP)?

     

    DDP=Bugs(tester)/(Bugs(tester)+Bugs(customer))

     

    测试人员发现的bug/(测试人员发现的bug+用户发现的bug)

     

    16、什么是单元测试?

     

    定义:又称模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作;可以从程序的内部结构出发设计测试用例,多个模块测试可以平行地独立进行测试。

     

    目的:发现模块内部可能存在的各种差错。

     

    内容:模块接口测试(数据的流入流出)、局部数据结构测试、路径测试、错误处理测试、边界测试。

     

    步骤:利用设计文档设计测试用例;创建被测试模块的桩模块或驱动模块;利用被测试模块、驱动模块和桩模块来建立测试环境,进行测试。

     

    17、什么是集成测试?

     

    定义:又称组装测试或联合测试,在单元测试基础上,将所有模块按概要设计和详细设计进行组装。

     

    目的:发现模块连接中的接口可能存在的各种差错。

     

    内容:穿越模块之间的数据是否会丢失;一个模块组装后是否会对另一个模块或其他模块存在影响;各个子功能组装在一起是否会达到预期的父功能;全局数据结构是否有问题。

     

    组装方法:一次性组装、增殖式组装。

     

    完成标志:成功地执行了测试计划中规定的所有测试用例;修正了所发现的错误;测试结果通过专门小组的评审。

     

    18、什么是系统测试?

     

    目的:验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。

     

    测试内容:在真实或模拟系统运行环境下,检查完整的程序系统能否和系统(硬件、网络、软件)正确配置、连接,满足用户需求。

     

    19、什么是验收测试?

     

    目的:在用户环境中进行测试,以确定系统和产品是否能满足合同或用户所规定的需求。

     

    内容:根据任务书或合同、供需双方约定的验收依据文档进行对整个系统的测试和评审,确认是否接收或拒绝系统。

     

    20、什么是静态测试?

     

    又称为静态分析技术,不执行被测试软件,对需求分析说明书、软件设计说明书、源程序做结构检测、流图分析、符号执行等找出软件的错误。

     

    21、什么是动态测试?

     

    通过输入一组预先按照一定的测试准则构造的实例数据动态运行程序,而达到发现程序错误的过程。

     

    22、什么是自动化测试?

     

    自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

     

    23、测试用例有哪些设计原则?

     

    单个用例覆盖最小化原则。每个测试用例应该尽可能的简单,只验证你所要验证的内容。

     

    测试用例替代产品文档功能原则。

     

    单次投入成本和多次投入成本原则。

     

    使测试结果分析和调试最简单化原则(针对自动化测试用例的扩展和延续)。

     

    24、什么是Alpha测试?

     

    是验收测试的一种,是由用户在开发者的场所来进行的,Alpha测试是在一个受控的环境中进行的。

     

    25、什么是Beta测试?

     

    是验收测试的一种,由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者。

     

    26、如何进行单元测试?

     

    内容有:接口测试、内部数据结构、全局数据结构、边界测试、路径测试、错误处理测试。

     

    27、手工测试和自动测试的优缺点?

     

    手工测试:缺点在于测试工作量大、重复多、回归测试难以实现。

     

    自动测试:利用软件测试工具自动实现全部或部分测试工作,管理、设计、执行和报告,节省大量的测试开销,并且能够完成一些手工测试无法实现的测试。

     

    手工完成测试的全部过程无法保证测试的科学性和严密性:修改的缺陷越多,回归测试越困难;没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率;反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一;测试花费的时间越长,测试的严格性也就越低。自动测试将测试人员从反复、烦杂的测试执行中解放出来,用更多的时间进行测试设计和结果分析:软件测试不可能完全自动化;不能完成所有手工测试任务;无创造性且灵活性差,不能改进测试的有效性;过程中可能会遇到许多意想不到的问题,特别是当软件不稳定时;测试脚本的维护成本高。

     

    28、测试用例设计有哪些方法?

     

    等价类划分法;边界值分析法;场景法;正交试验法;因果图;决策表;错误推测法。

     

    29、什么是测试计划?

     

    根据项目相关文档制定的、用于指导整个测试过程的文档,需要定义测试范围、测试策略、人员分配、软硬件配置、进度表及测试过程每个阶段需要达到的目标。

     

    30、测试用例包含哪些关键内容?

     

    用例编号、用例描述、前提条件、输入数据、测试步骤、预期结果6项关键内容。

     

    31、查找遗漏问题的方法有哪些?

     

    说明书是基础和标准;相关变动邮件、讨论记录;不定期阅读别人的缺陷;多和开发人员沟通;有选择的重新验证以前的缺陷;关注变化;简单思维方式,以主线为主,减少大遗漏。

     

    32、敏捷开发的理念? ?以人为核心、迭代、循序渐进的开发方式。个体和交互 胜过 过程和工具;可以工作的软件 胜过 面面俱到的文档;客户合作胜过合同谈判;响应变化胜过遵循计划。

     

    33、敏捷开发遵循的原则?

     

    通过尽早的、持续的交付有价值的软件来使客户满意;即使到了开发的后期,也欢迎改变需求,敏捷过程利用变化来为客户创造竞争优势;经常性的交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好;在整个项目开发期间,业务人员和开发人员必须天天都在一起工作;围绕被激励起来的个体来构建项目,给他们提供所需的环境和支持,并且信任他们能够完成工作;
    在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈;工作的软件是首要的进度度量标准;敏捷过程提倡可持续的开发速度,责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度;不断地关注优秀的技能和好的设计会增强敏捷能力;
    简单是最根本的;最好的架构、需求和设计出自组织团队;每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应的对自己的行为进行调整。

     

    34、什么是敏捷测试?

     

    敏捷测试是适应敏捷开发方法而采用的新的测试流程、方法和实践。简单的说,敏捷测试就是持续的对软件质量问题进行及时的反馈。

     

    35、什么是软件缺陷(bug)?

     

    软件缺陷是指系统或系统部件中那些导致系统或部件不能实现其应有功能的缺陷。如:

     

    软件未实现产品说明书要求的功能;

     

    软件出现产品说明书指明不应该出现的错误;

     

    软件实现了产品说明书未说明的功能;

     

    软件未实现产品说明书虽未明确提及但应该实现的目标;

     

    软件难以理解,不易使用,运行速度慢,或者软件测试员认为最终用户会认为不好。

     

    36、提交缺陷(bug)的要求?

     

    Bug描述的基本要求:分类准确、叙述简洁、步骤清楚、实际结果描述清楚、复杂问题有据可依。

     

    问题描述:模块或功能的—测试步骤—期望结果—实际结果—其他信息。

     

    单一、简洁、再现、复杂问题、报告不允许使用抽象的词语。

     

    37、白盒测试?

     

    白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。一般用来分析程序的内部结构。白盒测试要求对被测程序的结构特性做到一定程度的覆盖。

     

    控制流测试:

     

    语句覆盖准则:语句覆盖测试是最简单的结构性测试方法之一,要求在测试中,程序中的每条语句都得到运行。在控制流图中,要求所有语句都被运行的充要条件是覆盖图中的所有节点。

     

    分支覆盖准则:分支测试要求在软件测试中,每个分支都至少获得一次“真”值和一次“假”值。 分支覆盖测试包含语句覆盖测试

     

    谓词测试:一个分支的条件是由谓词组成的,单个谓词称为原子谓词,原子谓词可通过逻辑运算符(或、与、非)构成复合谓词。

     

    原子谓词覆盖准则:要求在软件测试中,每个复合谓词所包含的每一个原子谓词都至少获得一次真值和一次假值。原子谓词覆盖准则和语句覆盖准则相互之间没有包含关系,和分支覆盖准则相互之间也没有包含关系。

     

    分支--谓词覆盖准则:要求在软件测试中,不仅每个复合谓词所包含的每一个原子谓词都至少获得一次真值和一次假值,而且每个复合谓词本身也至少获得一次真值和一次假值。分支--谓词覆盖准则包含语句覆盖准则、分支覆盖准则、原子谓词覆盖准则。

     

    复合谓词覆盖准则:要求在软件测试中,每个条件中谓词的各种可能都至少出现一次。复合谓词覆盖准则包含语句覆盖准则、分支覆盖准则、原子谓词覆盖准则、分支--谓词覆盖准则。

     

    路径覆盖准则:要求观察程序运行的整个路径,要求程序的运行覆盖所有的完整路径。路径覆盖准则包含了分支覆盖准则,但与谓词测试之间没有包含关系。

     

    38、TDD(Test-Driven Development测试驱动开发)?

     

    TDD要求在编写某个功能的代码之前,先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。

     

    39、因果图法设计测试用例的步骤?

     

    ①分析需求,提取因果关系,并赋予标识符;②分析需求,提取输入与输出,并表示为因果图;③标明因果图上的约束条件;④将因果图转化为判定表;⑤根据判定表中每一列显示的情况设计测试用例。

     

    40、决策表法设计测试用例的步骤?

     

    ①列出所有的条件桩和动作桩;②确定规则的个数;③填入条件项;④填入动作项;⑤简化决策表,合并类似的规则或动作。

     

    41、自动化测试框架有哪些?

     

    模块化框架、函数库框架、数据驱动框架、关键字驱动框架。

     

    42、测试覆盖率分为哪几种统计方式?分别是什么?

     

    代码覆盖率、功能模块覆盖率、需求覆盖率、数据库覆盖率。

     

    以上就是软件测试基础知识汇总的全部内容了,初学者想要入门就必须掌握这些最基础的知识点。

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: 软件测试工作流程是怎样的?有哪些注意事项? 下一篇: 软件测试的发展前景怎么样?做软件测试有前途吗?

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码