c++ day 5

今天来学习程序相关的测试和调试,其实之前学习的时候最多就是设置断点什么的,今天系统的了解这一方面的知识。

当涉及到测试和调试时,C++提供了一些强大的工具和技术,可以帮助你发现和解决代码中的问题。下面是一些常用的测试和调试技术,以及它们在C++中的应用。

  1. 打印调试信息:在代码中插入打印语句,输出变量的值、程序流程等信息。这对于快速定位问题非常有用。
#include <iostream>
using namespace std;

void someFunction() {
    int x = 5;
    cout << "The value of x is: " << x << endl;
    // ...
}

int main() {
    // ...
    someFunction();
    // ...
    
    return 0;
}

 

  1. 断言(assertion):使用断言宏(assert)可以在代码中检查某个条件是否为真,如果条件不满足,则会终止程序执行,并输出相应的错误信息。
#include <cassert>

void someFunction(int x) {
    assert(x > 0 && "x must be positive");  // 断言 x > 0
    // ...
}

int main() {
    // ...
    someFunction(-5);
    // ...
    
    return 0;
}
  1. 单元测试:编写针对函数或类的单元测试,以验证其行为是否正确。有许多C++测试框架可用,例如Google Test和Catch2。
#include <iostream>
#define CATCH_CONFIG_MAIN
#include "catch.hpp"

int sum(int a, int b) {
    return a + b;
}

TEST_CASE("Sum of two numbers") {
    REQUIRE(sum(2, 3) == 5);
    REQUIRE(sum(-1, 7) == 6);
}

int main(int argc, char* argv[]) {
    int result = Catch::Session().run(argc, argv);
    return result;
}
  1. 调试器:使用调试器可以逐行执行代码,检查变量的值,设置断点来观察程序的执行情况,以及跟踪和定位错误。
  2. 常用的C++调试器包括GDB和LLDB,它们可以与大多数集成开发环境(IDE)和命令行工具一起使用。

对于测试数据的设计 有两种方法 黑盒法和白盒法。

  • 黑盒法(Black-box Testing):黑盒法是一种测试方法,测试人员只关注系统的输入和输出,而不考虑内部的实现细节。这种方法类似于将系统视为一个黑盒子,只关注功能和行为的验证,而不需要了解内部的工作原理。

  • 白盒法(White-box Testing):白盒法是一种测试方法,测试人员需要了解系统内部的结构、逻辑和代码实现。这种方法允许测试人员查看源代码,设计测试用例来覆盖不同的代码路径和逻辑,以验证系统在内部的正确性和稳定性。

 

 
posted @ 2023-07-10 16:01  芜湖大厨师  阅读(4)  评论(0编辑  收藏  举报