软件测试初学者入门教程(聊一聊软件测试)
软件测试初学者入门教程(聊一聊软件测试)以某宝为例,软件产品应为用户提供所有和购物相关的功能,就是适合性。如商品查询筛选、下单, 支付功能等,除了这些明显的功能之外 某宝还应提供一 些用户在特定场景下才可能会想到、用到的功能,如查看历史订单,查看查询记录(隐形需求)。软件产品为特定的任务和用户提供一组合适功能的能力。(有没有、有什么样的功能)功能性是指用户在指定条件下使用软件产品时,提供满足明确和隐含要求的功能的能力。功能性包含适合性、准确性、互操作性、安全性、功能顺从性,下面我们将以某宝为例,进行介绍:功能性-适合性
我们需要带着什么问题来理解下面的内容——“测试者从哪些方面 (测试类型)用哪些方法(测试方法)去测试产品(质量属性)”。
2.1软件产品质量模型“正确、全面、深入的理解用户需求是测试的基础,验证产品质量是否满足用户的需求是软件测试中一个重要的目标。
首先我们需要明确“软件产品质量模型"是什么。“软件产品质量模型”将一 个软件产品需要满足的质量划分为六大属性:功能性、可靠性、 易用性、效率、可维护性、可移植性。
2.2.1 功能性
功能性是指用户在指定条件下使用软件产品时,提供满足明确和隐含要求的功能的能力。
功能性包含适合性、准确性、互操作性、安全性、功能顺从性,下面我们将以某宝为例,进行介绍:
功能性-适合性
软件产品为特定的任务和用户提供一组合适功能的能力。(有没有、有什么样的功能)
以某宝为例,软件产品应为用户提供所有和购物相关的功能,就是适合性。如商品查询筛选、下单, 支付功能等,除了这些明显的功能之外 某宝还应提供一 些用户在特定场景下才可能会想到、用到的功能,如查看历史订单,查看查询记录(隐形需求)。
功能性-准确性
软件产品提供具有所有精度的正确或相符的结果及效果的能力。(功能对不对)
以某宝为例,实用查询功能,搜索“鞋子”,查询结果中应为鞋子相关商品,不会是98K,平底锅等商品。
功能性-安全性
软件产品保护信息和数据的能力,以保证未授权的用户或者系统不能阅读和修改这些信息与数据,而合法用户或者系统不会被拒绝访问。
以某宝为例,某宝不应包含能够被利用的安全漏洞与“用户权限”相关的内容,用户密码需要进行加密处理。
功能性-互操作性
软件产品与一个或多个特性、系统相互配合的能力。
以某宝为例,结算接口被支付、退款等多个模块调用。内外部接口能够互相配合,支撑。
功能性-功能顺从性
软件产品符合和该功能相关的标准、规范、规则或特定的能力。
2.2.2 可靠性
可靠性是指用户在指定条件下使用软件产品时,软件产品维持规定的性能级别的能力。
可靠性-成熟性
软件产品为避免因软件故障而导致失效的能力。
成熟性可以理解为产品的功能失效的概率,以某宝为例,某宝系统运行过程中,是否会出现搜索商品无响应等方面借误,一般来讲,可以通过重启APP等方法恢复。这种错误应该零容忍。
可靠性-容错性
软件产品在软件发生故障或者违反指定接口的情况下 维持规定的性能级别的能力。
以某宝为例,新增收件地址时,手机号码为空,系统是否会给出相应提示,不会因用户的错误输入,导致软件无响应,重启等异常。或者包容可能存在的异常情况。
可靠性-可恢复性
软件产品在失效发生的情况下,重建规定的性能级别并恢复受直接影响的数据的能力。
可以理解为软件一旦出现自身无法预期的异常 ,能够恢复(自动或被动)。
可靠性-可靠性顺从性
软件产品遵循与可靠性相关的标准、约定或者规定的能力。
2.2.3 易用性
易用性是指用户在指定条件下使用软件产品时,产品被用户理解、学习、使用和吸引用户的能力。简单概括:易懂、易学、易用、漂亮好看。
易用性-易理解性
软件产品使用户能够理解软件是否合适以及如何能够将软件用户特定的任务和使用环境的能力。(用户能够轻松的理解,软件产品何时何地如何使用)
以某宝为例,易理解性是指我们能够理解页面图标有功能的映射关系,如看到“相机图标 点开是拍照功能,而不是设置页面功能。
易用性-易学性
软件产品使用户能学习其应用的能力。
以某宝为例,首次使用淘宝的用户与具有多次使用经验的淘宝用户,完成次订单的时间大致是相同的,这就是易学性的体现。易用用户快速上手,降低或者简化了用户的学习成本。
易用性-易操作性
软件产品使用户能够操作和控制它的能力。
以某宝为例,搜索框输入“阿迪”时,会自动联想“阿迪相关的选项供用户筛选。
易用性-易用性的依从性
软件产品遵循与易用性相关的标准、约定、风格指南或者法规的能力。
2.2.4 效率
效率是指在规定条件下,相对于所用资源的数量,软件产品可提供适当的性能的能力。通常,效率就是我们所说的性能。
效率-时间特性
在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐量(流量)的能力。
以某宝为例,搜索商品的请求响应时间可以理解为时间特性的一个体现。
效率一资源利用率
在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力。
以某宝为例,10万用户进行下单操作时,占用服务器的资源(内存、CPU等)是否合理,可以理解为资源利用率的一个体现。
效率-效率依从性
软件产品遭循与效率相关的标准或者约定的能力。
可以理解为淘宝应满足多少用户操作,系统资源占用率或者响应时间应控制在什么范围内的要求。
2.2.5 可维护性
可维护性是指软件产品可被修改的能力。这里的修改是指纠正改进软件产品,和软件品对环境、功能规格变化的适用性。
可维护性-可分析性
软件产品诊断软件中的制陷,失效原因或识别待修改部分的能力。(降低维护成本)
以某宝为例,当系统发生产重的异常(无响应、重启), 系统能够捕捉并记录这些异常信息,并记录在系统日志中,并且这些信息对于开发人员来讲是足够的、有价值的、能够为定位或者重现问题提供帮助的。
可维护性-可修改性
软件产品能够被修改的能力。
以某宝为例,可修改性可以理解为,当某宝修复缺陷时,可以通过升级、更新操作来进行缺陷修复、验证。
可维护性-稳定性
软件产品不会因为修改而造成意外结果的能力。
以某宝为例,稳定性可以理解为,当某宝通过更新修复缺陷时,不会引入新的问题,系统能够稳定运行。
可维护性-可测试性
软件产品已修改的部分能够被确认修复的能力。
以某宝为例,可测试性可以理解为,系统的所有新增、改动的功能都是可以测试的,都是可以通过测试验证功能是否正确,符合需求预期。
可维护性--可维护性的依从性
软件产品遵循与维护性相关的标注或者约定的能力
以某宝为例,当确认订单时,由于某种故障或者异常, 导致下发失败, 系统会弹出相关提示信息 ,是可维护性的依从性的一种体现。
2.2.6 可移植性
可移植性是指软件产品从一种环境迁移到另一种环境的能力。
可移植性-适应性
软件产品无须采用额外的活动或者手段就适应不同指定环境的能力。
以某宝为例,适应性可以理解为,在不同电脑分辨率下,页面的布局, 大小都可以正常的展示,不需要做其它任何设置。
可移植性-可安装性
软件产品在指定环境中被安装的能力。
以某宝为例,可安装性可以理解为,系统能否顺利的被安装在不同的操作系统上,并且可以正常运行。
可移植性-共存性
软件产品在公共环境中同于其分享(复用)公共资源的其他独立组件共存的能力。
以手机某宝和某猫为例,共存性可以理解为,手机某宝与某猫存在服务器上的复用(共存),这种复用不会存在资源争抢、功能干扰等方面的问题。
可移植性-易交替性
软件产品在同样的环境下,交替另一个相同用途的制定软件产品的能力。
以手机某宝为例,若某天开发出手机某宝的替代品A A能够成功替换掉某宝(注意是共存,而不是升级)
可移植性 可移植性的依从性
软件产品遵循与可移植性相关的标准或约定的能力。
2.3 软件测试类型如果说质量属性解决的是从哪些角度去设计产品才能满足用户需求,那么测试类型解决的就是测试人员要从哪些角度去分析和测试产品(测试类型指的是测试需要考虑的不同角度)。
功能测试
验证产品各个功能模块是否正确,逻辑是否正确,通常采用黑盒测试方式。
性能测试
测试产品提供某项功能时的时间和资源使用情况,包括负载测试,强度测试,基准测试以及竞争测试。
安全性测试
验证产品是否有保护数据的能力,并能在合适的范围内承受恶意攻击,软件安全性测试包括程序、网络、数据库安全性测试。
兼容性测试
验证产品之间能否正确地进行交互和共享信息,包含向前兼容与向后兼容、不同版本间的兼容、标准和规范、数据共享兼容。
可靠性测试
验证产品在长时间运行下能否满足保证系统的性能水平;在存在异常的情况下系统是否依然可靠
易用性测试
验证产品是否易于理解、易于学习和易于操作
安装测试
测试产品能否被正确安装并运行,软件在正常情况和异常情况(硬件资源不足等情况)下进行首次安装、升级安装、自定义的安装都能进行安装。并且安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。
2.4 软件测试方法这里需要强调的是,测试不是越多越好,而是需要根据产品的质量目标、产品的风险分析来确定测试的重点和难点、深度和广度。
下面重点介绍可靠性测试中的几种测试方法,并简单介绍下易用性测试方法,关于易用性测试后续会通过专题方式(可用性测试)与大家进行交流。
2.4.1可靠性测试
可靠性测试测试的是产品在各种条件下维持规定的性能级别的能力。(在功能基本正确的前提下开展可靠性测试)
可能性测试方法-异常值输入法
异常值输入法是一种使用系统不允许输入的数值 (即异常值)作为测试输入的可靠性测试方法。
以某宝为例,某宝账号注册时,手机号填写为“123456"或者空时,系统会给出相应提示。
异常值输入法可以测试到系统的容错性,能够测试到系统处理各种错误输入的能力,是最基本的可靠性测试法方法。
可靠性测试方法-故障植入法
故障植入法是把系统放在有问题的环境中进行测试,主要能够测试到的质最属性是容错性和成熟性,与异常值输入法不同,异常值输入法是直接输入一个系统认为是错误的、不支持的值,而故障植入法是把系统放在有问题的环境中,但是输入依然是正常值。
以用户发送邮件为例,网络故障对用户来说是一个常见的故障,如断网,网络时断时续,存在丢包,在断网情况下,用户发送邮件会发送失败,系统应该有发送失败的提示,并在网络恢复的情况下能够自动重新发送邮件。
可靠性测试方法-稳定性测试法
产品规格指的是产品承诺的能够处理的最大容量或能力。例如某宝系统最高支持1亿用户并发下单,这就是产品规格。
稳定性测试法是在一段时间里,长时间大容量运行某种业务的一种可靠性测试法,需要特别指出的是,稳定性测武法、压力测试法、性能测试法是存在一定关系的,这个关系纽带就是产品规格。
稳定性测试是在低于性能值的前提下进行测试的。测试时,我们需要结合用户实际情况控制测试中的负载量 ,使测试结果更具准确性和可靠性
压力测试是在高于性能值的前提下进行测试的。测试时,我们需要注意并不是负载超过了系统的最大处理能力, 系统功能都会失效。例如,OA签到最多支持500用户井发登录,但某时550用户同时进行登录时,系统应保证550个用户中,500用户是可以正常登录,而不是所有用户都无法登录。
性能测试是验证产品真实规格是否与建设书或说明书中承诺的产品规格一数。
可靠性测试方法-压力测试法
压力测试法是在一段时间内持续使用超过系统规格的负载进行测试的一种可靠性测试方法。我们需要明确几点:
- 用户的业务负载并不是平均的,可能在吸短时间内,出现超过负载的情况,如某宝双十一
- 不建议用持续超过系统现檻负数的侧试方法进行压力测试,只要负载足够多,系统总会被搞挂,建议使用突发形态的负载模型。
易用性测试方法-一致性测试法
一致性测试法的测试对象是用户界面,如WEB页面、命令行等用户和产品直接进行交互的地方。
一致性测试法在测试中关注的是产品的用户界面:
- 风格、布局、元素上是否致一致、统一。
- 布局的合理性、操作的合理性、提示等是否符合UI设计规范。
一致性测试法能够测试到产品在易理解和易用性依从性方面的能力,但它并不关心产品功能是否正确,所以可以直接对产品的UI设计原型进行测试,而无须等待功能全面集成后再进行。
易用性测试方法-可用性测试法
可用性测试法的测试对象也是用户界面,但在可用性测试中,我们关注的是产品提供的功能,对用户来说是否易于学习理解、易于使用,所以可用性测试需要和功能测试结合起来,以场景作为测试粒度,以用户的视角进行测试。
即可用性测试最佳的人选是又懂用户又懂测试的人,如果能力不能兼具,懂用户、会使用的人更适合。不过在实际项目中,我们往往没有选择,进行可用性测试的人往往还是功能测试人员。由本功能的功能测试人员来进行可用性测试,最大的问题就是操作上的“审美疲劳,一个设计得再不合理的UI,作为它的功能则试者,早就“被习惯”了。所以更好的方式是在测试团队中作“交叉测试,即你测我的、我测你的。