人人都能学会的编程入门课
胡光
原百度高级算法研发工程师
19410 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
开篇词 (1讲)
人人都能学会的编程入门课
15
15
1.0x
00:00/00:00
登录|注册

26 | 牛刀小试(上):实现测试框架前的基础准备

你好,我是胡光。经历了千难万险,我们终于来到了这次编程探险旅程的最后一个阶段“综合项目篇”。
还记得开篇的时候,我跟你讲过的,要带你看看这片编程森林中最有趣的地方,不知道你感受到这份乐趣了吗?接下来的最后几节课,是我为你精心准备的,作为你编程入门学习之行的完成礼物,同时,也是对整个专栏学习内容的一个总结升华。
对于本章的学习,你需要综合运用“语言基础篇”“编码能力训练篇”以及“算法数据结构篇”中所学知识,完成两个小项目,一个是“个人测试框架开发”,另一个是“自制简易计算器”。我希望通过这两个项目,打通你编程学习的“任督二脉”,让你在后续的其他编程知识学习中,可以游刃有余,乐在其中。

软件开发流程

在开始做项目之前呢,让我们先来了解下一般的项目开发流程。
拿传统的软件工程开发流程来说,一个软件的项目开发流程,包括:需求分析、概要设计、详细设计、编码、测试、软件交付、验收和维护。虽然包括了 8 个阶段,可总的来说,你可以把它总结为软件开发的前中后三个部分。
软件开发的前期,由产品经理、项目经理跟进需求,做需求分析,然后是概要设计,出一份系统的详细设计。这是项目的头部阶段,主要是从理论上验证需求可行,并且最终产出一份切实可行的软件系统的详细设计。就像我在咱们每节课中,给你留思考题,此时我的角色就是项目经理和产品经理,我首先需要分析给你留的思考题是否可做,以及跟你说明白,大致怎么做。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何准备一个自己的测试框架以及介绍了项目开发流程的前中后三个部分,以及黑盒测试与白盒测试两种测试方法。作者首先解释了软件开发的前期、中期和后期阶段,比喻为项目经理和产品经理分析需求、详细设计,技术人员编码和测试,项目交付和维护的过程。然后,作者详细介绍了黑盒测试和白盒测试的概念,以及它们在实际编程中的应用。最后,作者强调了测试不仅是测试人员的专属,开发人员也需要掌握相关技能,并介绍了单元测试框架的概念。文章内容通俗易懂,适合初学者快速了解软件开发流程和测试方法。同时,文章还介绍了Google开发的单元测试框架Google Test(gtest),并提供了相关的使用代码和输出内容。通过对gtest的使用代码和输出内容的解析,读者可以了解gtest的基本使用方法和相关宏的作用。文章最后鼓励读者独立完成任务,并总结了今天的课程内容。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《人人都能学会的编程入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 🤪HappyJoo
    我是复制您的代码的呀,难道是我的gtest安装错了? https://github.com/HappyJoo/CLearningScript/blob/master/MyTestFramework/testFramework.cpp (弱弱地问一句,胡光老师是不是不喜欢看留言里面的评论的)

    作者回复: 还记得之前让你们看的编译和链接那里的内容吧。其中给你们留了一个自学的小作业。你看你的报错里面,报了一堆未定义,还全都是 gtest 中的符号未定义,是你编译的时候,没有链接 gtest 的静态库导致的。gtest 环境,你要是暂时装不明白,也不影响后续的学习,写文章的时候,就担心你们会遇到各种各样的环境或者编译问题,自己搞不定的话,留言区中回答这类问题,不是很方便,所以就跟你们强调了,即使你没有 gtest 也不影响接下来的学习。

    2020-03-27
  • 🤪HappyJoo
    老师: 1,不能用gcc编译吗?我用gcc的时候,连include<gtest/gtest.h>都出错,用g++不会出错(版本-7.5.0) 2,用g++之后还是不能用您的代码,出现了很多错误,最后一句是’collect2: error: ld returned 1 exit status‘,咋办咋办~~具体可以参考(https://stackoverflow.com/questions/60823428/using-gtest-with-gcc-cpp-got-error-collect2-error-ld-returned-1-exit-status).

    作者回复: 不能用 gcc 编译 gtest,因为 gtest 是 c++ 编写的单元测试框架。 你的代码上传一下 github,我看一下,看到这个错误,我盲猜,有可能是你的主函数名字写错了,你检查一下。

    2020-03-25
    2
  • 宋不肥
    提问: 我去官方的github(https://github.com/google/googletest)上下了包,解压后,在readme里面看见: If you use Windows and have Visual Studio installed, a `gtest.sln` file and several `.vcproj` files will be created. You can then build them using Visual Studio. 但是我在包里面没有找到‘gtest.sln`文件,然后回官方的GitHub里面find file也没找到,看博客Linux下会好配很多,在家只有笔记本,所以没能用Linux,但window里面VS配好像必须要这个‘gtest.sln`文件,找不到。

    作者回复: 现在 VS 下面也支持 cmake 编译,你可以试着在 VS 下面使用 cmake 编译工程。

    2020-03-20
    2
  • 罗耀龙@坐忘
    茶艺师学编程 思考题第一部分:TEST 宏展开以后会被替换成什么内容 应该是 int test(要测试的函数指针, 要校验的值){ if 运行正常 返回"OK”; if 运行错误 printf(“应该的值%d,现在的值%d”,正确的函数运行结果,输入的变量); } 第二部分:主函数中只调用了 RUN_ALL_TESTS 函数,为什么好像是执行了程序中所有的 TEST 代码段?这个功能是怎么实现的? 说实话,我在自己的VS2019环境中,输入了RUN_ALL_TESTS 函数,反而出现了红色的警告 在可获得的资料中得知,RUN_ALL_TESTS其实是一系列的命令的集合,依次调用 1. UnitTest::Run() 2. UnitTest::Run() 3. UnitTestImpl::RunAllTests() 4. TestCase::Run() 5. TestCase::Run() 6. Test::Run() 7. Test::TestBody() 不知道我想的对不对······
    2020-10-28
    1
  • 写单元测试是一个程序员的职业素养
    2020-03-19
    1
  • 罗耀龙@坐忘
    茶艺学编程 1、在网上搜gtest的安装教程是好,但是已经安装了VS2019的同学在这里可以窃喜了:VS2019就自带gtest的。想试着安装gtest的同学,我也建议还不如直接安装VS2019,顺便换一个新的编程环境; 2、在vs2019里,是直接用gtest新建项目,再把自己想要测试的东西放进去。 3、别傻傻的直接把老师的代码复制进去,得分别“填好”php.cpp、php.h、test.cpp三部分,代码才能跑起来。
    2020-10-28
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部