手机app开发定制app开发方案和报价表测试要点总结
对于APP开发,主要是进行系统测试。对于APP的系统测试,我们通常从以下几个方面进行:功能模块测试、跨事件测试、压力测试、容量测试、兼容性测试、可用性/用户体验测试等。功能测试——首先分析功能模块的功能项,测试每个功能项是否能实现相应的功能。根据一般的测试用例或者软件本身的流程,就可以完成基本的功能测试(相对简单,故障容易发现和解决)。跨事件测试,也称为事件或冲突测试,指的是在执行一个功能的同时,另一个事件或操作干扰了该过程的测试。比如在通话过程中接收短信或报警触发,在应用软件运行过程中插拔充电器等。干扰导致的冲突事件不会造成应用软件异常、手机死机或花屏等严重问题。此外,还需要注意每个跨事件的优先级,检查系统是否能按照优先级依次处理每个事件。不能通过执行高优先级事件来挂起低优先级事件。跨事件测试非常重要。一般可以发现应用软件的一些潜在问题。另外,有中英文模式切换的手机要注意中英文模式切换后功能实现中存在的问题(这主要是针对支持语言自适应功能的手机应用软件),这一点往往被测试人员忽略。测试-也称为边界值容错测试或极限负载测试。即在测试过程中,已经达到了某个软件功能的较大容量、边界值或较大承载极限,仍然在其上进行相关操作。比如连续收发短信超过收件箱和SIM卡可存储的短信数量,仍然收发短信,以此来检测软件在异常情况下的性能,进而评估用户能否接受。可以应用在手机上的压力测试类型主要有:存储压力:由于手机采用堆栈存储,当一个存储块满了之后,如果程序员没有做相应的处理或者处理不好,很容易造成其他存储区域被擦除,导致UI上出现问题(比如其他功能不能正常使用,有异常)。边界压力:边界处理一直是程序员比较容易忽略的地方。响应压力:有时某个操作可能需要很长时间来处理,在处理过程中,如果测试人员连续执行其他操作,很容易出现问题。网络流量压力:在执行大数据流量功能的同时,运行其他功能,使网络流量始终处于高状态(比如视频通话时运行短信等功能)。验证各功能是否还能正常工作,是否因为网络流量的瓶颈导致某个功能异常。手动压力测试可能很复杂,所以考虑自动化测试。遗憾的是,目前还没有广泛使用的工具,一般都是开发人员开发的工具或者高级测试人员编写的脚本。容量测试——即存储空间已满时的测试,包括手机用户可用内存和SIM卡所有空间被充分利用的测试。此时,执行与可编辑模块的存储空间相关的任何操作测试。如果软件在极限容量状态下处理不好,可能会导致死机或花屏严重等问题。兼容性测试——即不同品牌、型号的手机(目前针对我们的产品,主要针对不同品牌、型号的手机)、不同网络、不同品牌、不同容量SIM卡之间的兼容性测试。不同型号的手机支持不同的图片格式、声音格式、动画格式,所以要尽量选择通用格式,或者针对不同型号进行配置选择。以短信为例:中国电信的小灵通收到中国移动或中国联通GSM的短信,需要验证显示和回复功能是否正常。比如应用软件分别在NokiaN80和N93手机上运行,所有功能是否都能正常使用,所有界面是否正常显示。可用性/用户体验测试——可用性/用户体验是指软件产品在指定条件下使用时被用户理解、学习、使用和吸引的能力,是交互的适应性、功能性和有效性的集中体现。手机的操作主要靠大拇指,所以交互过程不能太复杂,交互步骤不能太多。我们应该尽力设计多种快捷方式。易用性是对终端软件(推而广之,交互软件)更基本、更重要的要求。不好的软件很难吸引用户,更别说提高用户对软件的忠诚度了。易用性体现在:所见即所得,用了就知道,学了就能方便快捷地完成预期功能。简单易用的软件可以让新用户快速学习和使用我们的软件,并在使用软件的过程中体现我们的贴心服务。超越用户的期望是我们的目标。暴力测试——是否应对断电、重启、断网等突发情况的安全测试方法。-安全性测试有多种测试方法。目前主要的安全测试方法有:①静态代码安全测试:主要通过对源代码的安全扫描,根据程序中的数据流、控制流、语义等信息,与其独有的软件安全规则库进行匹配,找出代码中潜在的安全漏洞。静态源代码安全测试是一种非常有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,让开发人员在早期解决潜在的安全问题。正因为如此,静态代码测试比测试阶段更适合早期的代码开发阶段。②动态渗透试验:渗透试验也是一种常用的安全性试验方法。就是用自动化的工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性的测试,找出运行时的安全漏洞。这种测试的特点是真实有效。一般查出的问题都是正确且严肃的。但是渗透测试的一个致命缺点是模拟测试数据只能到达有限的测试点,覆盖率很低。③程序数据扫描。一个安全性需求高的软件,运行过程中数据不能被破坏,否则会导致缓冲区溢出攻击。扫描数据的手段通常是内存测试。内存测试可以发现缓冲区溢出等很多其他测试手段难以发现的漏洞。比如扫描软件运行时的内存信息,看是否存在一些隐患。当然这需要专门的工具来验证,人工很难做到。逆向安全测试流程——大部分软件安全测试都是按照缺陷空间逆向设计的原理进行的,即事先检查哪里可能存在安全隐患,然后针对这些潜在的安全隐患进行测试。因此,逆向测试过程从缺陷空间出发,建立缺陷威胁模型,通过威胁模型找到入侵点,对入侵点的已知漏洞进行扫描测试。好处是可以对已知的缺陷进行分析,避免软件中存在已知类型的缺陷,但是对于未知的攻击手段和方法,通常是无能为力的。①建立缺陷威胁模型。缺陷威胁模型的建立主要从已知的安全漏洞入手,检查软件中是否存在已知的漏洞。在构建威胁模型时,需要先确定软件涉及到哪些专业领域,然后根据各个专业领域遇到的攻击方式来构建模型。②查找并扫描入侵点。检查威胁模型中的哪些缺陷可能出现在这个软件中,然后将可能的威胁纳入入侵点矩阵进行管理。如果有成熟的漏洞扫描工具,直接使用漏洞扫描工具进行扫描,然后将发现的可疑问题纳入入侵点矩阵进行管理。③入侵矩阵的验证测试。创建入侵矩阵后,可以针对入侵矩阵的具体条目设计相应的测试用例,然后进行测试和验证。正向安全测试过程——为了避免逆向设计原理导致的测试不完全,需要一种正向测试方法对软件进行完整的测试,使被测软件能够防范未知的攻击手段和方法。①首先确定测试空间。为了识别测试空间中的所有可变数据,由于安全测试的高成本,识别外部输入层是很重要的。比如需求分析、概要设计、详细设计和编码都要确定测试空间,建立测试空间的跟踪矩阵。②准确定义设计空间。重点检查需求中是否明确定义了设计空间,需求中涉及的数据是否都标识了其合法的取值范围。在这一步中,更要注重精准二字,严格按照安全原则精准定义设计空间。③识别安全隐患。根据找到的测试空间和设计空间以及它们之间的转换规则,识别哪些测试空间和转换规则可能存在安全隐患。比如测试空间越复杂,即测试空间划分越复杂或者可变数据组合越多,就越不安全。况且转换规则越复杂,出现问题的可能性越大,这些都是安全隐患。④建立并验证入侵矩阵。在识别安全风险后,可以根据识别的安全风险建立入侵矩阵。列出潜在的安全隐患,识别有安全隐患的可变数据,识别安全隐患的等级。对于那些具有高安全风险的可变数据,必须设计详细的测试用例。正向测试和反向测试的区别——正向测试过程是基于测试空间来发现缺陷和漏洞,而反向测试过程是基于已知的缺陷空间来发现软件中是否会出现相同的缺陷和漏洞。两者各有利弊。逆向测试过程的一个主要优点是成本低,只要验证已知的可能缺陷即可,但缺点是测试不完善,无法完全覆盖测试空间,无法发现未知的攻击手段。正向测试流程的优点是测试充分,但是工作量比较大。所以对安全性要求不高的软件一般可以按照逆向测试流程进行测试。对于安全性要求高的软件,应该以正向测试流程为主,反向测试流程为辅。常见的软件安全缺陷和漏洞——软件安全有很多方面,主要的安全问题都是由软件本身的漏洞造成的。以下是一些常见的软件安全缺陷和漏洞。缓冲区溢出——缓冲区溢出已经成为软件安全的头号公敌,很多实际的安全问题都与它有关。缓冲区溢出通常有两个原因。①设计空间中变换规则的验证。也就是说,缺乏对可测量数据的验证导致非法数据在外部输入层没有被检出和丢弃。数据非法进入接口层和实现层后,由于超出了接口层和实现层对应的测试空间或设计空间的范围而溢出。②局部测试空间和设计空间不足。当合法数据进入时,程序实现层中相应的测试空间或设计空间不足,导致程序处理时溢出。加密弱点——这些加密弱点是不安全的:①使用不安全的加密算法。加密算法不够强,有些加密算法甚至可以用穷举法破解。②加密数据时,密码是用伪随机算法生成的,但生成伪随机数的方法有缺陷,使密码容易被破解。③认证算法存在缺陷。④客户端和服务器的时钟不同步,给了攻击者足够的时间破解密码或修改数据。⑤加密的数据没有签名,这样攻击者就可以篡改数据。因此,在测试加密时,我们必须测试这些可能的加密弱点。(3)错误处理。一般错误处理会返回一些信息给用户,返回的错误信息可能会被恶意用户用来攻击。通过分析返回的错误信息,恶意用户可以知道下一步该做什么来使攻击成功。如果调用了一些错误处理中不应该用到的函数,就会用到错误处理的过程。错误处理属于非正常空间的处理问题,非正常空间的处理要尽量简单。用这个原理来设计可以避免这个问题。然而,错误处理经常涉及可用性问题。如果错误处理的提示信息过于简单,用户可能会很困惑,不知道下一步该怎么做。因此,在考虑错误处理安全性的同时,需要权衡易用性。权限过大——如果权限过大,可能会导致只有普通用户权限的恶意用户利用过大的权限做出危害安全的行为。例如,如果对可以操作的内容没有限制,用户可能能够访问规定范围之外的其他资源。在安全测试过程中,需要测试应用程序是否使用了过多的权限。重点是分析各种情况下应该存在的权限,然后检查实际是否超出了给定的权限。本质上,权限过大的问题属于设计空间过大的问题。所以设计时要控制好设计空间,避免设计空间过大导致权限过大的问题。做好安全测试的建议——很多软件安全测试经验告诉我们,做好软件安全测试的必要条件是:一是充分了解软件安全漏洞,二是评估安全风险,三是拥有高效的软件安全测试技术和工具。充分了解软件安全漏洞——评估一个软件系统的安全程度,需要从设计、实现、部署同时入手。我们先来看看CommonCriteria是如何评估软件系统安全性的。首先,确定软件产品的相应保护配置文件(PP)。PP为一类软件产品定义了一个安全特性模板。比如数据库的PP,防火墙的PP等等。然后根据PP提出具体的安全功能需求,比如用户身份认证的实现。之后,确定安全对象以及如何满足相应的安全功能要求。所以一个安全软件的三个环节都不能出问题。安全性的评估——安全测试后,软件能否达到预期的安全级别?这是安全测试人员比较关心的问题,所以需要建立测试后的安全评估机制。一般从以下两个方面来评价。(1)安全缺陷数据的评估。如果你在软件中发现更多的安全缺陷和漏洞,你可能会留下更多的缺陷。在进行这种评估时,必须建立基线数据作为参考,否则,没有评估的基础就不能得出正确的结论。(2)采用漏洞植入法进行评估。漏洞嵌入方法和可靠性测试中的故障插入测试是一样的,只是这里把一些存在安全隐患的问题插入到软件中。采用漏洞植入法时,首先由不参与安全测试的特定人员向软件中注入一定数量的漏洞,然后测试后发现多少植入的漏洞,以此来评价软件的安全测试做得是否充分。(3)使用安全测试技术和工具,可以使用具有特定功能的专业安全扫描软件来发现潜在的漏洞,将已经发生的缺陷纳入缺陷库,然后使用自动化缺陷库,通过自动化测试方法进行轰炸测试。比如用一些可以模拟各种攻击的软件进行测试。安全测试用于验证集成在软件中的保护机制是否能够真正保护系统免受非法入侵。用一句流行的话说,软件系统的安全性当然必须能够抵御正面攻击——但它也必须能够抵御侧面和背面的攻击。
如有软件开发需求,欢迎私信留言【软件开发类型+联系方式】,为你解答
关注我,免费使用微商城系统,助力您创业第一步


