关于软件测试的基础理论知识根据情况划分,内容比较丰富~
目录
1. 软件测试概述
2. 软件测试的基本软件概念
3、软件测试分类
4.如何设计白盒测试用例
5.如何设计黑盒测试用例
6. 缺陷管理软件缺陷
1. 软件测试概述
IEEE 对软件测试的定义:手动或自动测试运行或测量软件的过程其目的是检查软件系统是否满足规定的要求,并找出与预期结果的差异。 软件测试的发展趋势:①测试工作由单元测试组成,②新的研究热点不仅包括集成测试,还包括集成测试。系统测试、验收测试、需求准确性和完整性的测试技术、系统设计的测试技术、QA人员和测试工程师将得到更好的整合。 ④建立一个专业的体系。独立的软件测试部门将是未来的共识。 ⑤ 测试外包服务将快速增长,与软件开发外包类似,软件测试外包将成为全球趋势
软件测试工程师的素质:责任和能力。沟通能力。 耐心、谨慎、自信。 保持怀疑态度和缺陷预防意识。 能力: ① 一般能力:表达能力、沟通能力、协调能力。技能、管理技能、质量意识、软件开发过程方法、软件工程等。 ②测试技能和方法:基本测试概念和方法、测试工具的知识、熟练程度、对专业测试标准的熟悉程度等。 ③测试策划能力。 :风险分析和预防能力、制定测试目标和计划的能力等。 ④ 测试执行功能:包括测试数据/脚本/用例创建功能、测试比较与分析功能、缺陷记录与处理功能。 ⑤ 测试分析、报告和改进功能:包括测试测量、统计技术、测试报告、过程监控和持续改进功能。
测试工程师职责:测试人员必须了解项目需求,并站在用户的角度提供自己的测试意见。 测试人员必须制定合理的测试计划并将其与总体项目计划有机结合。 测试人员需要编写高覆盖率的测试用例。 测试人员应认真做好测试工作,并提交测试报告供项目参考。 测试人员必须跟踪和分析缺陷。
2、软件测试的基本软件概念
软件是计算机系统中与硬件相互依赖的部分,包括程序、数据及其完整的组合。 。 相关文件。 软件=程序+数据+文档。
软件的特点: ①软件是抽象的,因为它是一个逻辑实体而不是具体的物理实体。 ② 软件制造与硬件制造不同。 没有明显的制造过程会影响软件的质量。 控制软件需要开发方面的努力。 ③ 软件在运行和使用过程中,不存在像硬件那样的机械磨损或老化问题。 然而,它们存在老化问题,需要频繁更换和维护。 ④ 软件的开发和运行往往局限于计算机系统并不同程度地依赖于计算机系统。 为了消除这种依赖性,软件移植就成为软件开发过程中的一个问题。 ⑤ 软件本身比较复杂。 软件复杂性可能来自于它所反映的问题的复杂性,也可能来自于程序逻辑结构的复杂性。 ⑥软件成本高。 软件开发需要大量复杂、高强度的脑力劳动,其成本也比较高。
软件分类: 按功能分类: 系统软件:操作系统、数据库管理系统、各种驱动软件等 应用软件:Office、金山词霸、QQ等 技术结构: 单机版:Office、 C/S 结构软件:QQ、MSN 等 B/S 结构软件:新浪、搜狐、Google 等,按用户划分: 产品软件:Office、财务处理软件、金山毒霸、项目软件:为企业定制,如OA系统等 按开发规模划分:类别 参与人数、开发时间、小型 10人 1- 4个月以下,中型 10- 100人以下1年多,大100人人1年以上
软件测试理念:软件测试是运行程序发现错误的过程(狭义视角)。 使用手动或自动方式运行或测试软件系统的过程,目的是验证软件系统是否满足指定的要求并找出与预期结果的差异。 (IEEE标准定义)软件测试证明程序是错误的,而不是证明它没有错误(辩证的角度)。 测试被定义为“评估软件系统潜在风险的活动”。 (风险视角)软件测试是由“验证”和“验证”活动组成的整体,即软件测试V&V。 (标准思维)要充分理解软件测试,我们需要从不同的方面来考虑。 综上所述,软件测试是在整个软件开发生命周期中对软件产品(包括阶段性产品)进行验证和确认的过程。 其目的是尽快检测软件缺陷。
软件测试的目标:①源程序/目标代码 ②开发各阶段的文档(需求说明书、概要设计、详细设计及其他相关文档)
软件测试目的:用户角度的目的:通过软件测试发现隐藏的错误和缺陷,考虑产品是否可以接受。 从开发人员的角度来看的目的:证明软件产品没有错误并确保软件满足所有用户要求。 从测试人员的角度直观地看:发现错误、预测错误、提供软件可靠性错误以及评估软件。 ① 帮助开发人员和测试工程师发现和分析问题。 ②减少软件缺陷的数量或降低软件缺陷的密度。 ③提高软件可靠性。 ④评估软件性能指标。 ⑤ 增加用户对软件的信任度。 ⑥ 测试的最终目的是尽早发现软件缺陷,修复各种错误和缺陷以提高软件质量,并避免软件发布后潜在的软件缺陷和错误带来的业务风险。
软件测试的原则: ① 所有的测试都应该追溯用户的需求。 ②“尽快、持续地进行软件测试”应该成为软件测试人员的座右铭。 ③ 由于软件的复杂性和抽象性,由于错误可能发生在周期的每个阶段,因此软件测试不应被视为软件开发的一个单独阶段,而应集成到软件开发的所有阶段。 测试工作应从软件开发的需求和设计阶段开始,并创建相应的测试文档。 ④ 全面检查是不可能的,必须完成检查。 ⑤ 如果想在有限的时间和资源内进行彻底的测试,不可能找出所有软件缺陷和错误并使软件变得完美。 主要有以下三个原因。 ①输入量太大。 ② 输出结果过多; ③ 路径组合过多。 ⑥ 测试不能揭示潜在的软件缺陷:测试可以发现并报告它发现的任何软件缺陷或错误,但不能保证所有软件缺陷或错误都能被发现。 ⑦ 密切关注组测试中的聚类现象(28年定理):从经验来看,被测试的程序段中发现的错误越多,残留的错误就越多。 28/20缺陷定理是指在正常情况下,80%的软件缺陷出现在20%的功能区域中。 在测试过程中,投入了大量的人力资源和精力来测试20%的功能区域。 ⑧ 开发人员应避免检查他们的程序。 基于心理因素暴露程序中的问题从来都不是一件有趣的事情,而且你不想否定你的工作。 刻板印象使人们很难看到自己的错误。 因此,为了达到考试的目的,考试必须由客观、公正、严格的独立检测部门或独立的第三方检测机构进行。 ⑨ 尽量避免测试中的随机性:应该从工程角度来理解测试。 它是一项有组织、有计划、有步骤的活动。
软件测试中的误区: 误区1:如果发布的软件存在质量问题,那是软件测试人员的错。 误区二:软件测试的技术要求并不高。 至少比编程容易多了。 误区三:有时间就多测试;没有时间就少测试。 误区四:软件测试是测试人员的工作,与开发人员无关。 误区五:根据软件开发的瀑布模型,软件测试处于开发的后期阶段。
3、软件测试的分类
单元测试:
单元测试,也称为模块测试,是一种I'我在这里。 软件设计中的一个单元——程序模块,进行正确性检查的测试活动。 单元测试应根据程序的内部结构进行设计。法庭案件。 您可以独立且并行地对多个模块进行单元测试。
单元定义:
在C中,它指的是一个函数;在Java中,它指的是一个类。 在图形软件中,单位通常指窗口和菜单。 如何执行单元测试:单元测试主要使用白盒测试来完成。 首先静态检查代码是否符合规范,然后动态运行代码并检查实际执行结果。 检查程序执行结果是否正确是最基本的要求,也是应该重视的。 容错处理、程序边界值处理等
集成测试:
集成测试也称为组装测试。 通常情况下,所有的程序模块都是在单元测试的基础上有序地逐步进行测试的。 重点测试不同模块的接口部分。
系统测试:
是指对整个软件系统的测试,包括测试软件的功能、性能以及软件运行的软硬件环境。
验收测试:
验收测试是根据项目的任务说明或合同以及供需双方商定的验收标准文件对整个系统进行的测试和审查。 由各方决定是否接受或拒绝该系统。 在系统测试的后期阶段,用户测试是主要焦点,或者测试涉及测试人员和其他质量保证人员。
Alpha测试:指涉及用户、测试人员、开发人员等的内部测试。
Beta测试:指内部测试后的公开测试。 也就是说,完全是手工完成的。 传递给最终用户进行测试。 验收测试的重要性:验收签字、收款。
静态测试:不是实际运行被测软件,而是测试可能的程序代码、接口,它仅指静态检查文档。 。 过程中出现错误。
动态测试:是指实际运行被测程序,输入相应的测试数据,检查实际输出结果是否与预期结果相符。 (动态测试方法有结构和正确性测试;动态测试工具Robot、QTP等)
黑盒测试:指将被测软件视为黑盒。 它在盒子里面。 我们只考虑软件的输入数据和输出。
白盒测试:指打开一个盒子并检查里面的源代码。代码和程序结构。 软件公司经常结合使用黑盒和白盒测试。
静态黑盒测试:检查文档、页面等。 静态白盒测试:检查源代码等。 动态黑盒测试:软件使用等等。 动态白盒测试:包括运行源代码。
灰盒测试:概述 灰盒测试介于白盒测试和黑盒测试之间,主要用于集成测试阶段。 它不仅关注输出和输入的正确性,还关注程序的内部状态。
功能测试:这是黑盒测试的一个方面。 检查软件的实际功能是否满足用户的需求。
逻辑功能测试(功能测试)
界面测试(UI测试)
可用性测试(可用性测试)
安装测试( Installationtesting)
兼容性测试(Compatibility Test)
性能测试:软件测试的一个高端分支。 通常所说的高级软件测试工程师是指性能测试或白盒测试工程师。 时间性能(如事务响应时间) 空间性能(系统资源消耗) 一般性能测试 可靠性测试 负载测试 压力测试
回归测试:测试新版本时,指的是重复运行某个测试。 软件用例版本。
冒烟测试:在对新版本进行大规模系统测试之前验证软件的基本功能是否已实现且可测试。
随机测试:是指测试的所有输入数据都是随机生成的,其目的是模拟用户的真实操作,发现一些边际误差。
软件测试过程:软件开发过程分为以下几个阶段:需求验证、单元测试、集成测试、确认测试、系统测试和验收测试。
4、如何设计白盒测试用例
测试用例(缩写为TestCase,TC):测试用例,包括测试环境、测试步骤、测试数据、和预期结果是指在执行之前设计的一套详细的测试计划。 测试用例是黑盒测试或用于测试设计案例的对话框。 创建测试用例的唯一依据是用户的需求,具体参考资料是“需求说明书”。
为什么要设计测试用例:软件测试是一项有组织、有计划、循序渐进的活动。 为了将软件测试行为转化为可管理的、具体的和量化的模式,必须创建和设计测试用例。
测试用例的四个特征:
表征:表征各种理性与非理性、合法与非法、边界与边界、极限输入数据、操作等都可以涵盖。
针对性:测试程序中可能存在的错误。
可判定性:测试执行结果的正确性是可判定的,每个测试用例必须有相应的预期结果。
再现性:对于相同的测试用例,系统执行结果应该是相同的。
测试用例基本原则:
使用成熟的测试用例设计技术来指导你的设计
测试用例适当性
测试使用的代表性用例
测试用例的可判定性
具有足够详细、精确和明确的程序的测试用例的可重复性
测试用例必须符合内部规范要求
>
语句覆盖:语句覆盖是设计多个测试用例并对其进行测试以使每个可执行语句至少执行一次的过程。
决策覆盖(也称为分支覆盖):设计多个测试用例。 用于执行被测程序的测试用例,使得程序中每个决策的真分支和假分支至少执行一次。
条件覆盖:设计足够的测试用例并运行被测程序,以满足每个条件。 设计一个足以针对程序中每个决策的每个条件的每个可能值运行测试程序至少一次的测试例程。
决策-条件覆盖:确保程序中每个决策的每个条件的所有可能值都至少执行一次,并且每个可能的决策结果也至少执行一次。测试用例并运行测试的程序。 它运行一次,一直运行。 决策的每个可能的条件值组合必须至少执行一次。
组合测试:精心设计测试用例。 运行被测程序,以便程序中每个决策的所有可能的条件值组合至少执行一次。
路径测试:设计足够的测试用例并在以下条件下运行程序: 测试并确保覆盖程序中所有可能的路径。
主要测试技巧:分支条件覆盖、基本路径测试
5、黑盒测试用例设计方法
主要测试技巧:等价类划分(边界值)分析)、特征图法、(正交实验法)
6、缺陷管理 软件缺陷
软件缺陷:
指软件。 软件(程序、数据、文档)中存在的缺陷,无法满足用户的需求。
软件缺陷的原因:
需求规范:需求规范中的错误或需求不明确所导致的缺陷是导致缺陷的首要原因。
设计文档:不准确的设计文档和与需求规范的不匹配是导致缺陷的第二大原因。
编码:这纯粹是由于编码问题造成的。
其他:这可能是由于系统集成和测试造成的。
软件缺陷的根本原因:沟通不畅(客户与开发人员、开发人员与测试人员等) 软件复杂性(功能复杂、开发复杂、测试复杂) 开发人员错误(需求的不可预测性)理解、开发压力、能力和经验)需求变化(需求规范设计文档程序的变化)进度压力(相对要求较高的项目周期)
发现软件中的缺陷措施:同行评审、测试、管理评审、QA 结果、内部项目团队的调查结果和客户反馈。 为了便于缺陷识别、跟踪和修复,需要根据严重性、优先级、发现阶段、修复阶段、缺陷性质、缺陷所属功能模块以及系统分类和统计来对发现的缺陷进行分类。 环境等方面。
80/20定理:80%的软件问题总是发生在20%左右的功能模块上。
缺陷密度:基本的缺陷度量是每1000行代码的缺陷数(/KLOC),度量单位是缺陷/KLOC。
常见查找Bug的方法:颜色、功能结构布局、照片、页面大小、字体、表单大小、界面文字、容错处理(这也是一个功能缺陷,所谓容错就是容忍错误的能力,如果用户在使用软件时出现错误,软件会提供指导信息,帮助用户执行正确的操作。))、数据转换(增、删、改、检查)和性能缺陷(黑盒测试)。
Web测试:
Web测试是测试网站系统在不同客户端(浏览器)上的行为和兼容性。
Selenium:
Selenium 是一个用于测试 Web 应用程序的工具。 Selenium 测试直接在浏览器中运行,就像真正的用户一样。
最后,向每一位认真阅读我文章的人表示感谢。 当你看到粉丝数量的增长和他们受到的关注时,总会有一定程度的礼貌。 虽然没那么值钱,但是如果能用的话,带在身边也无妨。 go:
此资料应该是各位【软件测试】朋友们最全面、最齐全的准备仓库了。 这个仓库也陪伴了数万名测试工程师走过了最艰难的旅程。 希望对你也有帮助!
你也可以自己加入我的QQ技术交流群(技术交流,资源分享,无广告)。
群号:310357728 群里这份免费资料是作者10多年测试生涯的精华。 有时同行业的专家聚集在一起交流技术。
如果我能帮到你哪怕一点点,你的“赞”就是小编我创作的最大动力。 下一篇文章见。
评论前必须登录!
注册