文档章节

功能测试与非功能测试

八音弦
 八音弦
发布于 10/23 15:34
字数 3194
阅读 13
收藏 0

根据一份报告,应用程序崩溃导致71%的卸载。迫使用户卸载应用程序的其他原因是页面响应时间,混乱的UI,电池消耗等。这表明功能测试和非功能测试对于交付用户友好型应用程序的重要性。因此,让我们了解什么是功能测试。

什么是功能测试?

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

functional-testing.png

功能测试类型

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

单元测试

在单元测试中,在开发阶段将测试软件应用程序的各个组件。单元测试通常由开发人员而不是测试人员完成。测试一段代码形式的功能以验证准确性。驱动程序,单元测试框架,模拟对象和存根用于执行单元测试。

单元测试通常是自动化的,但有时可以手动完成。可以在指导文档的帮助下完成手动方法。可以在所有类型的移动应用程序上执行单元测试。 在自动单元测试中,开发人员在应用程序中编写代码以测试功能或过程。部署应用程序后,即可删除该代码。该功能可以隔离以严格测试应用程序,它揭示了被测试代码与其他单元之间的依赖关系。然后可以消除依赖关系。大多数开发人员使用单元测试自动化框架来记录失败的测试用例。

整合测试

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

健全性测试

在收到软件版本后,会对功能进行细微更改,以进行完备性测试,以确保纠正错误,并且将来不会由于这些更改而出现问题。目的是在表面上测试功能,而不是彻底检查开发人员是否合理构建了功能。

通常,执行健全性测试时会考虑以下这些步骤。使用新添加的功能标记代码中引入的修改。评估这些标记的功能,以确保它们是否能够发挥其作用。然后测试相关功能,相关参数和元素,以确保其正常工作。毕竟,构建可以接受其他高级测试方法。最好使用基于云的测试平台而不是在线Android模拟器,因为它们提供了数百种设备浏览​​器组合。

烟雾测试

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

回归测试

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

系统测试

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

Beta/用户接受度测试

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

什么是非功能测试?

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

非功能测试类型

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

性能测试

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

耐力测试:

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

可伸缩性测试:

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

负载测试:

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

压力测试:

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

峰值测试:

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

容量测试:

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

相容性测试

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

安全测试

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

让我们看一下在安全测试期间应消除的主要安全威胁。

权限提升

在这种情况下,黑客可能会使用应用程序,但他/她可以增加已经在您的应用程序中拥有帐户并使用默认提供的服务所提供的特权。例如,如果该应用程序具有引荐该应用程序给朋友的某些积分条款,那么黑客可以扩展该限制并从中获得更多收益。

##未经授权的数据访问 最常见的攻击类型是获得未经授权的访问以获取有价值的信息。这可以通过破解登录凭据或通过入侵服务器访问数据来简单地完成。

URL操作

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

拒绝服务

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

可用性测试

可用性测试由一小组用户执行,以找出应用程序中的可用性缺陷。提出设计时,它是在软件开发的初始阶段完成的。重点在于用户使用该应用程序的简易程度以及系统是否达到其预期目标。这种类型的移动测试也可以在在线android模拟器上执行。

我们可以通过几种方法来进行可用性测试。一个是在设计阶段,您可以只在一张纸上画画就能评估设计。一旦构建应用程序以检查可用性,也可以进行随机测试。可以由站点上的实际用户来完成,然后可以提供结果。除此之外,基于设计和线框输入的工具,统计信息可能会非常有用。

从结构上执行可用性测试的第一步是识别要执行可用性应用程序的用户。必须根据地理位置,年龄,性别等不同的应用程序的行为来选择用户。下一步是设计用户应该执行的任务,然后花时间分析结果完成的测试。

可用性可以在观察者面前的隔离测试区域中进行,该观察者将检查测试并创建有关已分配任务的报告。下一个选项是远程可用性测试。在这种情况下,观察者和测试者位于不同的位置,分配的任务可以远程完成。测试人员的详细信息(如反应)将由自动化软件记录。

本地化测试

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

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

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

结论

在最初的3个月内,应用平均损失了95%的新用户。这是因为较少关注测试,因此该应用程序存在错误。可以使用良好的策略和工具在应用程序上执行功能测试和非功能测试来避免这种情况。

技术类文章精选

非技术文章精选

大咖风采

© 著作权归作者所有

八音弦
粉丝 3
博文 164
码字总数 191100
作品 0
海淀
私信 提问
测试过程之过分关注功能性测试

一、定义: 过分强调功能测试,而非测试质量、数据和接口需求。以及测试架构、设计和实现的约束。 二、发生时间段 非功能性需求中。 三、陷阱表现 1.大多数的测试关注验证功能性表现 2.没有验...

honzhang
2018/01/08
0
0
ORM for Net主流框架汇总与效率测试

框架已经被越来越多的人所关注与使用了,今天我们就来研究一下net方面的几个主流ORM框架,以及它们的效率测试(可能会有遗漏欢迎大家讨论)。 ORM框架:Object/Relation Mapping(对象/关系 ...

黄欣怡
2017/06/13
0
0
客户端case优先级定义

一、TEST CASE的优先级定义 测试用例的优先级用于标识测试用例的重要性和执行频率,共分为4级,由高至低依次为P0-P3。 P0 核心功能测试用例(冒烟测试),确定此版本是否可测的测试用例,此部...

AwesomeQA
2016/08/05
433
0
测试方法【总结】

测试方法 从测试设计方法分类 总结:在实际工作中,对系统的了解越多越好,目前大多数的测试人员都是做黑盒测试,很少做白盒测试。因为白盒测试对程序员的要求很高,需要有编程能力,例如pyt...

阳光蜜汁
2017/08/17
0
0
【转载】【面试题】你是一个测试工程师,如何保证软件质量?

参答*案:质量是有层次(内部质量,外部质量,使用质量,过程质量) 内部质量:主要指代码的质量,就需要引入开发工程师进行单元测试。 外部质量:软件被整合成为一个整体,从整体上保证软件...

beijing_zbs
2016/04/21
835
0

没有更多内容

加载失败,请刷新页面

加载更多

前端的一些雕虫小技,从100%和滚动条说起

1、100%和滚动条 当我们在css中把html和body同时设为100%时,会出现滚动条 html, body { width: 100%; height: 100%; } 原因是html和b...

wphmoon
今天
6
0
电力区块链应用案例【2019】

随着区块链技术的日益普及,出现了大量创业企业尝试使用区块链技术来解决能源与电力行业中存在的问题。在本文中,我们将介绍其中的三个能源区块链项目。 能源行业以价格不透明著称:消费者很...

汇智网教程
今天
10
0
聊聊rocketmq的adjustThreadPoolNumsThreshold

序 本文主要研究一下rocketmq的adjustThreadPoolNumsThreshold DefaultMQPushConsumer rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.ja......

go4it
今天
10
0
关于早起

早起是非常好的事情,但是像如果前一天睡得晚,或者第二天早上是非常冷的时候,那就不是很美好了。 但是本身早起是一件非常棒的事情,我记得我每次早起 如果不觉得困的话,世界是那么安静,脑...

T型人才追梦者
今天
7
0
Java输入输出

JDK中的InputStream/OutputStream构成了IO输入输出继承层次的基础。它们都是面向字节序列的,每次可以从序列中读入或者写出一个字节或者指定大小的字节数组。但是面向字节流的输入输出不便于...

ytuan996
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部