• 0
  • 0
分享

  之前说了太多的测试技术和测试用例设计方法,猛地发现有点“偏科“了。今天我们放松一些,泡一杯茶,一起来聊一聊测试策略吧。

  当然,文章脉络肯定是咱们老三样:什么是测试策略,为什么要制定测试策略,怎么制定测试策略。

  什么是测试策略?

  在中文的解释里,策略也可以叫做计划、谋略,是可以实现目标的方案集合:

  首先,有一个确定指向的目标;

  其次,是一个方案的集合;

  再次,是灵活可可变动的。

  所以,我们所说的测试策略,简单来说,可以归纳为:测什么、怎么测。

  “测什么“是目标,“怎么测”是方法。那么,我们为什么要制定测试策略呢?

  为什么要制定测试策略?

  首先,制定测试策略能够帮助测试团队更清楚测试目标,从而更好地判断测试结果、产品质量是否达标,判定产品是否可以发布。

  其次,对于测试管理来说,制定测试策略能够帮助测试管理人员更好地实现风险管理。

  清楚测试目标和测试方法,能够让测试管理人员更好地实施基于风险的测试。并且测试策略可以与开发/测试过程进行融合,更好地在子阶段选动态选用测试策略。

  不仅如此,还能帮助测试人员更深入地理解测试技术/手段/工具地差异性,在测试过程中选用更好地测试方法。

  总的来说,测试策略是可变的,根据不同场景地变化,具有明确或具体的测试目标。测试策略是为了效益最大化,在有限的条件下选择最适合的测试方法。

  怎么制定测试策略

  测试策略需要考虑哪些因素

  项目环境

  代表了一组上下文因素,包括项目中的资源、约束条件等,主要包括以下内容:

  任务,你需要为客户解决的问题。

  问问自己:为什么要测试?你知道谁是你的客户吗?你的客户或者其他人对你的测试任务有什么样的想法?

  信息,关于测试所需的产品或项目的信息。

  问问自己:我们可以咨询谁来了解这个项目?有工程文件可用、用户手册、基于web的材料、规格、用户故事,这个产品有历史版本吗?有哪些遗留的问题?

  以及你的测试版本是最新的吗?你是如何得知新的或变化的信息的?有没有类似的产品或项目可以让我们收集到重要的信息?

  开发者关系,你如何与程序员相处,这取决于你有疑问能不能很快且良好地得到解决。

  问问自己:你是否与程序员建立了友好的工作关系开发人员对你的测试策略有什么看法?

  测试团队,执行或支持测试的任何人。

  问问自己:你知道谁将参加测试,他们是否拥有所需的知识和技能?

  “测试团队”中是否有可能提供帮助的人,那些之前测试过类似产品的人可能会有什么建议,作家、用户、程序员?是否有特定的测试技术,团队中有人有特殊的技能或动机去执行?

  设备和工具,管理测试所需的硬件、软件或文档。

  问问自己:是否拥有测试所需的所有物理或虚拟硬件,是否拥有能够自动控制和观察产品行为的工具,是否拥有创建测试数据、设计场景或分析和跟踪测试结果的工具,是否需要任何文档来跟踪或记录测试的进展?

  时间表,项目事件的顺序、持续时间和同步。

  问问自己:

  测试设计:你有多少时间进行测试?

  测试执行:何时执行测试是否有一些测试是重复执行的,比如,为了回归目的?

  开发:构建何时可以用于测试、添加功能、冻结代码等?

  测试项目,要测试的产品。

  问问自己:

  范围:产品的哪些部分在你的测试职责范围内,哪些部分不在?

  可用性:你有要测试的产品吗,你们有可用的测试平台吗?

  波动性:产品是否在不断变化,如何针对这些变化进行测试?

  新功能:你知道最近有什么添加到产品中的新功能吗?

  交付,测试项目的可观察产品。

  问问自己:

  内容:你需要做什么样的报告?

  目的:你的可交付成果是否作为产品的一部分提供,还有其他人帮你做测试吗?

  标准:你是否有一个特定的测试文档?

  产品元素

  涉及产品的各个方面,包括产品固有的方面以及产品与外部事物之间的关系。主要包括以下内容:

  结构,构成实体产品的所有东西。

  例如代码、硬件、非执行文件、附属品等。

  功能,产品所做的一切。

  例如应用、时间相关、安全相关、启动/关闭、错误处理、交互作用等。

  数据,产品加工的所有东西。

  例如输入/输出、预置、持久化、相互依赖/相互作用、无效/噪声、生命周期等。

  接口,每一个产品被访问或表达的管道。

  例如用户界面、API/SDK、导入/导出等。

  平台,产品所依赖的所有东西(以及项目之外的东西)。

  例如外部硬件、外部软件、嵌入式组件、产品足迹等。

  操作,如何使用产品。

  例如用户、环境、常见使用、错误使用、极端使用等。

  时间,产品和时间之间的关系。

  例如输入/输出、快/慢、改变速率、并发性等。

  质量标准类别

  评价产品质量的标准,例如可靠性、稳定性等,它是主观的、多维的。主要包括以下内容:

  能力

  问问自己:它能执行所需的功能吗,它执行的结果正确吗?

  可靠性

  问问自己:它会在所有需要的情况下都能很好地工作并抵抗失败吗 ?

  测试要点如:

  健壮性:在合理的条件下,产品可以持续运行一段时间而不退化。

  错误处理:产品在错误的情况下能够抵抗失败,在失败的情况下能够很好地恢复。

  数据完整性:保护系统中的数据不丢失或损坏。

  安全性:产品不会出现危害生命或财产的故障。

  可用性

  问问自己:一个真正的用户使用这个产品有多容易。

  测试要点如:

  易学性:目标用户可以快速掌握产品的操作。

  可操作性:产品可进行复合操作。

  易访问性:产品符合相关的标准,并符合O/S易访问性特性。

  外观性

  问问自己:产品有多吸引人?

  测试要点如:

  美学:产品吸引感官。

  独特性:产品在某种程度上是新的或特别的。

  必要性:产品具有用户期望的功能。

  实用性:产品解决了重要的问题,而且解决得很好。

  入迷:用户在使用产品时被吸引住,获得乐趣,完全沉浸其中。

  形象:产品表现出期望的质量印象。

  安全

  问问自己:产品如何防止未经授权的使用或入侵?

  测试要点如:

  认证:系统验证用户权限操作正确。

  授权:通过认证的用户在不同的权限级别上被授予的权限。

  隐私:保护客户或员工数据不受未授权人员侵犯的方式。

  可伸缩性

  问问自己:产品部署的规模是扩大还是缩小 ?

  测试要点如:产品可以扩展或收缩部署。

  兼容性

  问问自己:它与外部组件和配置的配合情况如何?

  测试要点如:

  应用兼容性:该产品与其他软件产品协同工作。

  操作系统兼容性:产品适用于特定的操作系统。

  硬件兼容性:该产品适用于特定的硬件组件和配置。

  向后兼容性:产品与自身的早期版本兼容性。

  性能

  问问自己:它的速度和响应速度如何?

  可安装性

  问问自己:

  系统要求:产品是否识别出某些必要的组件缺失或不足?

  配置:系统哪些部分受安装影响,文件和资源存储在哪里?

  卸载:当产品卸载时,是否干净地卸载?

  测试技术

  决定了测试人员如何、何处以及何时应用特定技术需要对项目环境、产品元素和质量标准进行分析。主要包括以下内容:

  功能测试,测试它能做什么。

  确定产品可以做的事情(功能和子功能),确保每个子功能都做了它应该做的事,而不是它不应该做的事。

  域测试,分治数据。

  寻找产品处理过的任何数据,既要看输入,也要看输出;

  决定使用哪个特定的数据进行测试,考虑边界值、典型值、方便值、无效值或最佳代表;

  考虑值得一起测试的数据组合。

  压力测试,压倒产品。

  寻找那些在具有挑战性的数据或受限的资源存在时容易过载或“崩溃”的子系统和功能;

  确定与这些子系统和功能相关的数据和资源;

  选择或生成具有挑战性的数据,或资源约束条件来测试。

  例如,大型或复杂的数据结构,高负载,长时间测试运行,许多测试用例,低内存条件。

  流测试,做一件又一件事。

  执行端到端连接的多个活动;

  不要在两次操作之间重置系统;

  改变时间和顺序,并尝试并行线程。

  场景测试,测试一个引人入胜的故事。

  首先考虑产品周围发生的一切;

  设计测试,包括与产品有意义和复杂的交互。

  需求测试,确认每一个需求。

  确定参考材料,包括关于产品的声明(默示或明确),考虑规范、帮助文本、手册等;

  分析个人需求,澄清模糊的需求;

  测试关于产品的每个声明;

  如果您正在从一个明确的规范进行测试,那么期望它和产品保持一致。

  用户测试,让用户参与进来。

  识别用户的类别和角色;

  确定每一类用户将做什么(用例),他们将如何做;

  获得真正的用户数据,或者让真正的用户参与测试;

  强大的用户测试涉及多种用户和用户角色,而不仅仅是一个。

  风险测试,想象一个问题,然后找到它。

  想象产品会有哪些问题,哪一种最重要?关注这些,列出一些有趣的问题,并专门设计测试来揭示它们。咨询专家、设计文档、过去的错误报告或应用风险启发式可能会有所帮助。

  自动化测试,编写一个程序来生成并运行无数的检查。

  寻找或开发可以执行许多操作和检查许多事情的工具;

  考虑部分自动化测试覆盖率的工具;

  考虑部分自动化oracle的工具;

  考虑自动变更检测器;

  考虑自动测试数据生成器。

  如何将测试策略实体化

  测试策略转化为测试活动,通过测试策略确定的测试活动,并拆解为一个个测试任务嵌入测试计划,才能将测试策略有效实体化。

  例如,测试策略S确定了测试活动A1、A2,A1和A2拆解出测试任务T11、T12、T13,和T21、T22。为测试任务分配测试责任人和测试工期,最终成为一个完成的测试计划。

1.png

表1 测试策略实体化,最终形成基础测试计划

  由上所述,本文简单讲述了测试策略的含义、意义以及制定测试策略需要考虑的元素和测试策略的实体化。

  希望能帮助大家对测试策略有个更全面和清晰的认识。

  测试进阶

  在智能驾驶发展得如火如荼的今天,软件测试行业也随之衍生出车载测试的岗位需求。对比其它在招岗位,车载测试的薪资也更加可观。


作者:刘晓佳Rachel    

来源:http://www.51testing.com/html/31/n-7796231.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   最近国产API管理工具卷起来了,甚至发生了公开踩踏事件,但最后还是要回归产品,产品好才真的好。给大家推荐Eolink,低调又强大。Eolink是结合了 API 设计、文档管理、自动化测试、监控、研发管理和团队协作的一站式 API 生产平台,还集成 Gitlab、Jenkins、钉钉、企业微信、飞书等平台,简直就是一个六边形战士,没有短板!最重要的是,Eolink在商用方面已全面领先!  目前SaaS产品完全免费,你可使用web版,也可下载桌面端,Windows、Mac、Linux 平台均支持!  一、API研发测试天花板  目前市面上有众多API研发工具,但Eolink依然在功能...
            0 0 986
            分享
          • 什么是接口测试?怎样做接口测试?内容:什么是接口?接口都有哪些类型?接口的本质是什么?什么是接口测试?问什么要做接口测试?怎样做接口测试?接口测测试点是什么?接口测试都要掌握哪些知识?其他相关知识?1.什么是接口?接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。2.接口都有哪些类型?接口一般分为两种:程序内部的接口系统对外的接口系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用...
            1 1 844
            分享
          •   什么是功能测试?  进行功能测试以确保应用程序的功能符合需求规范。这是黑盒测试,不涉及应用程序源代码的详细信息。在执行功能测试时,重点应放在应用程序主要功能的用户友好性上。  要首先执行功能测试,我们需要识别测试输入并使用选定的测试输入值计算预期结果。然后执行测试用例,并将实际数据与预期结果进行比较。  功能测试类型  让我们看一下针对移动应用程序的不同类型的功能测试。  单元测试  在单元测试中,在开发阶段将测试软件应用程序的各个组件。单元测试通常由开发人员而不是测试人员完成。测试一段代码形式的功能以验证准确性。驱动程序,单元测试框架,模拟对象和存根用于执行单元测试。  单元测试通常是自...
            14 14 2320
            分享
          • 1、软件接口是什么?程序不同模块之间传输数据并作处理的类或函数2、HTTP和HTTPS协议区别?答:https协议需要到CA(CertificateAuthority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用;http是超文本传输协议,信息是明文传输,Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全;http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;3.HTTPS在哪一层?答:HTTPS在应用层4、get和post区别是什么?答:POST和GET都是向服务器提交数据,并且都会从服务器获...
            12 15 3018
            分享
          • 大家好呀,我是阿常,昨天帅张广州分队邀请了嘉宾 lee、木木以及若坤关于「求职面试」进行线上分享,由于阿常当天有其他安排,所以只完整地听完了lee的分享,木木的分享阿常听了一部分,若坤的分享阿常没听到有些可惜。下面阿常把自己听到的部分内容做个总结:一、lee 的分享数据产品小lee一枚数据产品经理,分享工作日常,所思所想一)深度复盘,好好认识自己(分析自己)知道自己的特长,自己短期、长期的需求,匹配自己的需求。1、思考你的优势和劣势是什么,据此判断什么样的工作适合你2、想清楚你为什么要换工作,你未来 3~5 年的规划是怎样的二)了解市场需求、清除信息差(分析市场)分析市场最重要的就是...
            0 0 962
            分享
      • 51testing软件测试圈微信