黑盒测试: 一直产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试: 一直产品的内部工作过程,可以通过测试证明每种内部操作都符合设计规格要求,所有内部成分是否进行检查

黑盒测试

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑构造和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或者数据驱动测试。

阅读全文 »

什么是UML?

UMLUnified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。

为什么要用UML?

通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。

阅读全文 »

优先级高的运算符在优先级低的运算符之前计算。当运算符具有相同的优先级时,它们的结合性决定了计算顺序

阅读全文 »

设计模式大纲

  1. 创建型模式:用来描述 “如何创建对象”,它的主要特点是 “将对象的创建和使用分离”。包括单例、原型、工厂方法、抽象工厂和建造者 5 种模式。

  2. 结构型模式:用来描述如何将类或对象按照某种布局组成更大的结构。包括代理、适配器、桥接、装饰、外观、享元和组合 7 种模式。

  3. 行为型模式:用来识别对象之间的常用交流模式以及如何分配职责。包括模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录和解释器 11 种模式。

阅读全文 »

基本概念

我们先看看gstreamer结构体中的一些对象的继承关系图:

GObject
 +----GstElement(包含GstBus,GstState, List of pad、GstClock等)
   +----GstBin (元件的容器,包含GstClock,子bus等)
     +----GstPipeline(包含stream_time等)
阅读全文 »

类的作用域

在C++中,每个类定义了自己的作用域和唯一的类型。这意味着在类内部声明的成员(函数和变量)都被引入了这个类的作用域。一个类的作用域可以分为三个主要部分:

阅读全文 »

内联(inline)

内联变量

C++17引入了内联变量,使得变量可以在头文件中定义并在多个编译单元中使用,避免了传统的extern声明和单一cpp文件定义的限制。它的作用是方便在头文件中定义全局变量而不会引起链接错误。

阅读全文 »

在 C++ 中,有时需要确保类的对象只能在堆上创建,而不能在栈上实例化。这种需求通常出现在类内部包含大量数据或需要特殊的内存管理时。为了确保对象只能在堆上创建,并且避免在栈上创建对象,可以使用以下方法

  • 将析构函数定义为 private:通过将析构函数设为 private,防止在栈上自动销毁对象。如果用 protected,则可以被子类继承。

  • 提供静态成员函数main 函数中无法直接使用 delete 释放对象内存,因此提供一个静态成员函数来负责对象的创建和销毁,确保堆上的内存管理。

阅读全文 »

多态(Polymorphism)是面向对象编程的重要特性之一,在C++中,多态使得我们可以用相同的函数名来调用不同的实现,从而使得系统更具扩展性和灵活性。

阅读全文 »

继承和派生

面向对象编程的四个基本概念

  1. 抽象:通过抽象类或接口定义对象的核心特性。

  2. 封装:用类来封装数据和操作,隐藏内部实现,提供公共接口。

  3. 继承:通过继承复用已有类的特性,构造新的类。

  4. 多态(动态绑定):通过动态绑定在运行时决定调用的是基类还是派生类的函数。

阅读全文 »