【定义类】一功能测试和非功能测试

发布时间 2023-12-12 10:58:51作者: 半夏来福

什么是功能测试?

进行功能测试以确保应用程序的功能符合需求规范。这是黑盒测试,不涉及应用程序源代码详细信息。在执行功能测试时, 重点应放在应用程序主要功能的用户友好性上。要首先执行功能测试,我们需要识别测试输入并使用选定的测试输入值计算预期结果。然后执行测试用例,并将实际数据与预期结果进行比较。

功能测试类型

让我们看一下针对移动应用程序的不同类型的功能测试。

单元测试

在单元测试中,在开发阶段将测试软件应用程序的各个组件。单元测试通常由开发人员而不是测试人员完成。测试一段代码形式的功能以验证准确性。驱动程序,单元测试框架,模拟对象和存根用于执行单元测试。
单元测试通常是自动化的,但有时可以手动完成。可以在指导文档的帮助下完成手动方法。可以在所有类型的移动应用程序上执行单元测试。在自动单元测试中,开发人员在应用程序中编写代码以测试功能或过程。部署应用程序后,即可删除该代码。该功能可以隔离以严格测试应用程序,它揭示了被测试代码与其他单元之间的依赖关系。然后可以消除依赖关系。大多数开发人员使用单元测试自动化框架来记录失败的测试用例。
 

整合测试  集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。

进行集成测试以检查应用程序的各个组件在集成时是否按预期运行。通常,在对所有构建进行测试和组合后,在单元测试之后进行集成测试。

健全性测试

在收到软件版本后,会对功能进行细微更改,以进行完备性测试,以确保纠正错误,并且将来不会由于这些更改而出现问题。目的是在表面上测试功能,而不是彻底检查开发人员是否合理构建了功能。
通常,执行健全性测试时会考虑以下这些步骤。使用新添加的功能标记代码中引入的修改。评估这些标记的功能,以确保它们是否能够发挥其作用。然后测试相关功能,相关参数和元素,以确保其正常工作。毕竟,构建可以接受其他高级测试方法。最好使用基于云的测试平台而不是在线Android模拟器,因为它们提供了数百种设备浏览器组合。

烟雾测试

这样做是为了检查构建是否足够稳定以进行进一步的测试。烟雾测试是端对端完成的,而不是像我们进行疯狂测试那样针对特定组件进行的。

回归测试

进行回归测试以检查新添加的代码是否对应用程序的功能没有任何不利影响。当应用程序中添加了新功能时或仅在代码中进行了一些更改时,即可完成此操作。代码中的更改可能影响产品的现有流程或存在错误。可以通过进行回归测试来评估。在回归测试中,动机是启动优化,增强功能并解决现有功能中需要的问题。

系统测试=整合(功能)测试+健全性测试

系统测试是对完全集成的软件产品的测试。该软件与硬件和其他软件连接,并在系统上完全集成的应用程序上进行了一系列测试。既可以是白盒,也可以是黑盒。

Beta/用户接受度测试

在准备好发布应用程序之前,此测试会在测试过程的最后阶段进行。由客户/用户执行以验证端到端业务流程和用户友好性。

什么是非功能测试?

非功能测试旨在通过各种标准(例如负载测试,可伸缩性测试,压力测试等)评估应用程序的就绪状态。它评估应用程序在挑战性条件下的性能。

非功能测试类型

让我们看一下针对移动应用程序的5种主要的非功能测试。

性能测试

性能测试已经完成,以确保该应用程序在预期的工作负载下能够正常运行。目的是发现性能问题,例如可靠性,资源使用情况等,而不是发现错误。在进行性能测试时,我们应牢记的三件事是快速响应,最大的用户负载以及在变化的环境中的稳定性。即使您专注于移动测试并使用在线Android模拟器,也无法避免性能测试。

耐力测试:

这样做是为了检查应用程序是否能够承受预期必须长时间承受的负载。

可伸缩性测试:

可以检查应用程序在软件,硬件和数据库级别的最大负载和最小负载下的性能。

负载测试:

在这种情况下,系统会模拟任何应用程序上的实际用户负载,以检查该应用程序可以承受的最大负载的阈值。

压力测试:

这样做是为了检查极端负载条件下应用程序的可靠性,稳定性和错误处理。

峰值测试:

在这种情况下,测试应用程序时用户负载会突然增加和减少。通过执行峰值测试,我们还可以了解应用稳定的恢复时间。

容量测试:

这样做是为了分析充斥大量数据时应用程序的行为和响应时间。

相容性测试

执行兼容性测试以确保该应用程序可以在不同的硬件,操作系统,网络环境和屏幕尺寸上正常运行。

安全测试

安全测试是移动应用程序测试过程中最重要的部分,它可确保您的应用程序安全且不会受到恶意软件和病毒等任何外部威胁的攻击。通过这样做,我们可以找出应用程序中的漏洞,这些漏洞可能导致数据丢失,收入增加或对组织的信任。
让我们看一下在安全测试期间应消除的主要安全威胁。

权限提升

在这种情况下,黑客可能会使用应用程序,但他/她可以增加已经在您的应用程序中拥有帐户并使用默认提供的服务所提供的特权。例如,如果该应用程序具有引荐该应用程序给朋友的某些积分条款,那么黑客可以扩展该限制并从中获得更多收益。
##未经授权的数据访问 最常见的攻击类型是获得未经授权的访问以获取有价值的信息。这可以通过破解登录凭据或通过入侵服务器访问数据来简单地完成。

URL操作

如果应用程序或网站使用HTTPGET方法在客户端和服务器之间传输数据,则黑客会操纵URL查询字符串。质量检查小组可以传递修改后的参数值,以查看服务器是否接受它。

拒绝服务

进行这种类型的攻击是为了使最终用户无法访问应用程序的服务。这样,黑客还可以提高应用程序和服务器计算机的工作机制的稳定性。

可用性测试

可用性测试由一小组用户执行,以找出应用程序中的可用性缺陷。提出设计时,它是在软件开发的初始阶段完成的。重点在于用户使用该应用程序的简易程度以及系统是否达到其预期目标。这种类型的移动测试也可以在在线android模拟器上执行。
我们可以通过几种方法来进行可用性测试。一个是在设计阶段,您可以只在一张纸上画画就能评估设计。一旦构建应用程序以检查可用性,也可以进行随机测试。可以由站点上的实际用户来完成,然后可以提供结果。除此之外,基于设计和线框输入的工具,统计信息可能会非常有用。
从结构上执行可用性测试的第一步是识别要执行可用性应用程序的用户。必须根据地理位置,年龄,性别等不同的应用程序的行为来选择用户。下一步是设计用户应该执行的任务,然后花时间分析结果完成的测试。
可用性可以在观察者面前的隔离测试区域中进行,该观察者将检查测试并创建有关已分配任务的报告。下一个选项是远程可用性测试。在这种情况下,观察者和测试者位于不同的位置,分配的任务可以远程完成。测试人员的详细信息(如反应)将由自动化软件记录。

本地化测试

这样做是为了确保该应用程序是自定义的,并且按照其可用国家/地区的文化运行。关键重点在于应用程序的内容和用户界面。该应用程序经过测试过程,以检查是否根据目标区域设计了默认语言,日期和时间格式,货币等。

功能测试与非功能测试之间的区别

功能测试
非功能测试
这样做是为了验证应用程序的动作和操作。
验证应用程序的性能。
重点在于用户需求。
关注用户期望。
它在非功能测试之前执行。
在功能测试后执行。
定义功能需求很容易。
很难定义非功能测试的要求。
例如:检查登录功能。
例如:页面应在1秒钟内加载。
功能测试易于通过手动测试执行
非功能测试应该是自动化的。
 

----------测试流程--------
1、严格按流程办事:
1.1、排计划计划跟进、如未在排期计划的时间节点提供产出、该报风险的抱风险、该重新排期的重新排期(注:发邮件后一定要在线上或者oa中通知相关人员进行查看)
1.2、提测后部署耗时过程,以邮件的形式备注清楚部署耗时过长的原因,发送相关人员
1.3、在测试过程中发现有服务未在提测中提供服务,近期可告知提测人员、在审批单中备注说明需要增加构建的服务、并找到配置管理员进行增加服务、后续会强制要求其重新提测(配置管理员在收到增加构建服务后,需在对应审批中确认、然后在增加)
2、bug跟踪注意事项:
2.1、提bug:一定要描述清楚复现步骤和现象、不要让开发研究半天,尽量减少沟通成本;
2.2、验证bug:
  2.2.1、待验证的bug及时跟踪,不要出现一个搁置好久才激活;
  2.2.2、待修复的bug未能及时修复、一定要去追、为什么搁置未修复、然后备注到bug上;
  2.2.3、将上线的版本中,严格把控,一律不允许出现未修复的bug和解决方案是已解决待验证的bug;
  2.2.4、严格按解决方案进行验证、解决方案不对的一定要让开发进行更正解决方案后在进行关闭、每个解决的方案验证策略是不同;
开发模型
在V模型的开发模式中,单元测试是第一个动态测试活动。通过函数级测试,有效检查出每一类错误,比如算法错误、边界控制错误、数据溢出等。通过单元测试,可以尽可能早得发现Bug,防止直到后面的测试过程或者直到最终用户那里才被发现。在整个项目开发测试周期中,越早发现Bug越好,事实证明,开展详尽规范的单元测试能够有效减少系统测试和回归测试时间,降低开发成本。
 
细化需求:
  1. 功能测试:
  2. 功能(UI图等)--适用性—准确性—保密安全性—互操作性—依从性
  3. 性能测试:
  4. 效率—时间特性(不能超过3秒影响)—资源利用性(cpu内存等)--依从性(是否合法操作)
  5. 兼容性测试:
  6. 可移植性--适应性(兼容性)--易安装性—可替换性(升级)--共存性
  7. 功能测试拓展:
  8. 可靠性—成熟性—容错性(账号登录出错等例子)--易回复性
  9. 维护性—易分析性(log日志排查)--易改变性—稳定性—易测试性—依从性
  10. 易用性—易理解性—易学性—易操作性—吸引性—依从性
 
软件测试分类
  1. 按测试对象分类:
  2. 黑盒测试(功能)--系统测试
  3. 白盒测试(对代码进行测试)--单元测试
  4. 灰盒测试—接口—集成测试
  5. 按执行手段分类:
  6. 手工测试
  7. 自动化测试
  8. 按是否执行被测软件分类:
  9. 动态测试
  10. 静态测试