测试人应该知道的几个基本测试概念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试人应该知道的几个基本测试概念相关的知识,希望对你有一定的参考价值。

实现代码注册器模式非常容易理解和实现。一般会有一个属性用来存放多个对象实例,以及set及get方法。set方法用来将对象实例保存在属性数组中,get方法用来或取想要的对象实例。

class Registry
{
    // 保存实例对象
    private static $objs = [];
    
    // get获取实例对象
    public static function get(string $alias) : Object
{
        if (!isset(self::$objs[$alias])) {
            throw new Exception($alias . ‘not found‘);
        }
        
        return self::$objs[$alias];
    }
    
    // set将实例对象注册到属性$objs中
    public static function set (string $alias, Object $obj) : void
{
        if (!isset(self::$objs[$alias])) {
            self::$objs[$alias] = $obj;
        }
    }
    
    // 注销实例
    public static function unset (string $alias) :void
{
        if (isset(self::$objs[$alias])) {
            unset(self::$objs[$alias]);
        }
    }
}

使用注册树模式和工厂模式来代替单例模式
我们知道,单例是非常有用的,可以避免资源浪费等。但是,单例模式已经被认为是一种反面模式了,认为单例模式不好测试及维护。关于为什么单例模式被认为是反面模式,这里就不细说了,有兴趣的朋友可以自行谷歌。那么,我们有没有其他的方法用来保证单例,但不使用单例模式呢?有的,我们可以使用注册树模式和工厂模式来替代单例模式。下面是具体代码:

class Registry
{
    // 保存实例对象
    private static $objs = [];
    
    // get获取实例对象
    public static function get(string $alias) 
{
        if (!isset(self::$objs[$alias])) {
            return null;
        }
        return self::$objs[$alias];
    }
    
    // set将实例对象注册到属性$objs中
    public static function set (string $alias, Object $obj) : void
{
        if (!isset(self::$objs[$alias])) {
            self::$objs[$alias] = $obj;
        }
    }
    
    // 注销实例
    public static function unset (string $alias) :void
{
        if (isset(self::$objs[$alias])) {
            unset(self::$objs[$alias]);
        }
    }
}

class DbFactory
{
    const ALIAS = ‘Db‘;
    
    public static function create ()
{
        $db = Registry::get(self::ALIAS);
        if (!$db) {
            $db = new Db([
                ‘host‘ => ‘localhost‘,
                ‘user‘ => ‘root‘,
                ‘pass‘ => ‘‘,
                ‘db_name‘ => ‘test‘
            ]);
            Registry::set(self::ALIAS, $db);
        }
        
        return $db;
    }
}

当我们需要Db实例是,只要去调用DbFactory::create即可,该方法保证了单例。下面是测试代码:

$db = DbFactory::create();
var_dump($db);

 

链接:https://mp.weixin.qq.com/s/K5UVDqKKTPwfKnQiQkW8MQ

以上是关于测试人应该知道的几个基本测试概念的主要内容,如果未能解决你的问题,请参考以下文章

同岗位别人薪资却是你的几倍?高薪测试人掌握的这些技能库,你现在有几个?

软件测试的几个基本原则

Jmeter中的几个重要测试指标释义

Testing - 自动化测试的几个基础概念

性能测试,负载测试,压力测试有什么区别

服务端测试之接口测试用例设计