如何用软件设计思维编写自动化测试脚本?

 

1、什么是自动化测试脚本?

自动化测试脚本是代替人工完成测试执行的工具,而应用软件的诞生也是为了帮助人完成一些复杂、冗余的工作。本质上来说,自动化测试脚本与应用软件的定位是一样的,只是使用是专业的测试人员而已。概括起来就是:自动化测试脚本是一款帮助 测试人员完成测试执行工作的应用软件。

2、什么是软件设计呢?

概括起来,软件设计就是构建一套模型,制定一组规范。

(1)模型是一个软件的骨架,是定义一个软件之所以是这个软件的核心。举个栗子,我们都知道淘宝和知乎是两个不同的软件,为什么不同呢?因为他们的功能不一样,淘宝可以进行购物、支付等功能,是一个大型在线购物平台,而知乎可以发帖、阅读、讨论,是一个大型知识分享平台。把功能再继续抽象出来,就能得到淘宝的模型是:挑选商品--购买商品--售后服务。从功能上来说,知乎的模型抽象出来就是:查阅、分享、讨论。淘宝的模型是时序的,而知乎的模型是独立的。所以模型是区分软件的核心。反过来想,是不是很多软件的模型是差不多?是的,比如京东、天猫就和淘宝的模型是大同小异的。

(2)模型的粒度可大可小。一个模型在宏观上可能只是软件更高级模型的一部分,同理,一个大的模型可以分割出很多小模型。模型粒度是可以变化,在实际应用中要根据实际情况来分割。

(3)模型必须是高内聚、低耦合的。简单说,抽象出来的模型最好只做一件事,不受其他模型影响,也不影响其他模型的工作。本质就是分治的思想。

(4)模型的构建应当是分层的。很多个小模型组成了大模型,小模型和大模型的组织方式应当是分层的。即先构建基础模型、核心模型,再通过组合构建出上一层模型。

23种设计模式就是为了解决模型的组织形式而提出来的。比如经典的MVC模型,就是将web应用抽象出来的一个通用模型。

制定一组规范是什么意思?

狭义上来说,变量的命名规范、函数的调用方法、类的定义等都属于软件规范的范畴。从广义上数,项目需求书的描述、项目版本的发布流程规范等,都属于软件设计规范的范畴。概括起来就是:一切显式的、团队的、统一的、符合软件设计原则的的规范。

3、设计模式六大原则

(1)开闭原则:对扩展开放,对修改关闭。简单说,假如某个接口的功能不能满足当前需求,正确的做法应该是在原接口只上扩展,而不是直接修改原接口。

(2)里氏替代原则:任何基类可以出现的地方,子类一定可以出现。栗子:如果当前场景想要修改某个类,那么不应该直接修改父类,而应该修改子类,因为可以调用父类的地方,一定可以调用子类。

(3)依赖倒置原则:面向接口编程,依赖抽象而不是依赖具象。栗子:java中的接口,只定义方法名、属性名,而不定义具体的实现方式,这就是抽象。而要实现某个具体的方法时,放到另一个类中去实现,这就是具象。这样无数个类都可以依赖这个抽象的接口。

(4)接口隔离原则:使用多个隔离的接口,而不是单个接口。栗子:当需要完成一个设计多个场景的功能时,应当使用多个隔离的接口来组合实现,而不是写到一个接口中。

(5)迪米特原则:最少知道原则,即一个实体尽量不与其他实体发生相互作用。

(6)合成复用原则:多用组合,少用继承。

4、如何设计一个软件?

从解决抽象的问题开始,而不是先考虑如何实现。

设计一个软件可以按照:模型-接口-实现 三部曲进行。

模型如前所述。接口即软件交互的入口,定义了通过怎么样的方式将模型提供的能力暴露出去。实现即结合自己软件的特点,选择合适的框架、工具完成接口的功能。实际的软件设计过程中,这三步曲是可以再逐步细分,一个接口的实现可能有可能划分成好几个小模型,每个小模型又有自己的接口。

综上所述,自动化测试脚本亦可以按照上述过程进行开发设计。实际的应用软件还要考虑软件的可测试性、分离点等,但是对于自动化测试脚本而言,可以不用考虑。

image-20220217153713398

 

QA1:如何才能知道哪些规范是规范的?

答:只有不断踩坑,不断尝试。

QA2:模型划分粒度如何把握?

答:一次性就设计出一个完美的模型是不可能,只有在不断的重构过程中去完善。当新的需求假如之后,可能回引起模型的耦合,当出现三次及以上的耦合情况时,就应该考虑重构。

 

 posted on 2022-02-17 15:59  佩剑君子  阅读(290)  评论(0编辑  收藏  举报