• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 背景:最近有个项目,开发工时在1000+h,测试这边预估的工作量在400h左右,但按照项目截点算,预留给测试的时间只有200h左右。(这里先不考虑开发可能提前交付,以及项目截点延期)纵观,整个项目的研发过程,我们总会遇到测试资源和时间很有局限的情况:一是:在项目截点固定的前提下,可能受到产品、开发部分工作进度的压缩;二是:测试工作本身需要终止点,可能是上线时间到了,也可能是发现的问题都解决了。测试工作最大的挑战就是在有效的时间内发现较多的缺陷,从而使软件达到一个相对可靠的质量(不敢说绝对可靠,毕竟发现的问题越多隐藏的问题也就越多)。这就要求我们测试要有策略性的测试,那么什么是测试策略呢?何为测...
            0 0 1129
            分享
          • 前言:MySQL越学越多,你的头有越来越秃么?1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;从:sql执行线程——执行relay log中的语句;2、MySQL中myisam与innodb的区别,至少5点问5点不同?1>.InnoDB支持事物,而MyISAM不支持事物2>.InnoDB支持行级锁,而MyISAM支持表级锁3>.In...
            0 0 829
            分享
          • 选择题一、数量关系1、甲乙2人比赛爬楼梯,已知每层楼梯相同,速度不变,当甲到3层时,乙到2层,照这样计算,当甲到9层时,乙到( D )层A.5 B.6C.7 D.82、有一份选择题试卷共6个小题,其得分标准是:一道小题答对得8分,答错得0分,不答得2分,某位同学得了20分,则他( D )A.至多答对一道题 B.至少有三个小题没答 C.至少答对三个小题 D.答错两小题3、有只蜗牛要从一口井底爬出来。井深20尺。蜗牛每天白天向上爬3尺,晚上向下滑2尺。请问该蜗牛几天才能爬出井口? (A)A.20B.19C.18D.154、下列哪一个计算结...
            0 0 903
            分享
          •   前言  无论做什么自动化,测试报告一定要有的,它可以清楚的展示出来我们执行用例的情况。便于查看自动化测试结果内容。安静这边了解目前通过python生成的测试报告分别有:HTMLTestRunner、BeautifulReport 、 pytest-html 和Allure,这几种报告内容都是属于不同的模板,本篇文章主要介绍下这如何生成以上四份报告的过程以及对比情况。  HTMLTestRunner  HTMLTestRunner是Python标准库的unittest模块的扩展。它生成易于使用的HTML测试报告。使用时需要下载,然后放到项目目录中  下载地址:http://tungwaiyi...
            12 12 1501
            分享
          •   前言  写本篇的原因很简单,2023年还有3个月就结束了,要给自己及其他小伙伴做下总结;  以前呢,都是自己做总结,围绕的无非就是对团队的贡献,个人成长;  但是现在不一样,需要帮小伙伴做总结,也需要为测试团队做总结,突然觉得压力山大,而且也要给优秀同学提名奖项;  因此,就有了本篇的内容,目的很简单,测试岗在评绩效时,到底有哪些维度?  业务测试  测试岗位的分工,粗略分为业务测试跟测试开发,两者因岗位的不同,而要求自然也会有区别,这里就先聊聊业务测试;  从结论而言,业务测试肯定是第一位的,是产品的基础,因此围绕业务会有很多衍生品,比如性能、兼容性、稳定性、安全等等,尽管如此,业务测试...
            0 0 355
            分享
      • 51testing软件测试圈微信