开发区域

先进与MATLAB软件开发

另一种持续集成

嗨。我超级兴奋地介绍我们的新开发区域的博客!我MathWorks工作小组,负责建设基础设施和体系结构,作为一个公司,我们需要交付高质量的软件,时间表,和满足客户的需求。简而言之,我们开发的构建、测试和集成工具需要生产生产级别的软件在多个平台上,使用许多不同的技术。我的特定团队专注于测试基础设施和MATLAB的主要开发人员单元测试框架

如你想像我非常感兴趣的开发方法和如何构建生产软件。这个博客是一个承认这一事实我们不是唯一有一个热情的人。的确,我们听到很多人面临相似的任务构建生产级软件使用MATLAB®作为一个关键的技术堆栈,我们有成千上万的世界级MATLAB开发人员在房子做同样的事情。我兴奋地分享一些我们使用的构件开发健壮的、可扩展的、灵活的软件,用MATLAB编写的,和我同样兴奋听到你也在做着同样的事情。

为我们的博客的第一篇文章开始,我认为这是合适的描述MATLAB如何接口与CI系统这是一个必须与他人合作,构建高质量的软件。

CI吗?c他吗?

等等,我在说什么,CI系统?嗯,你觉得当你听到这个词“持续集成”?你认为计算不定积分和定积分的连续函数或与一个系统,帮助构建和测试软件吗?谷歌检查表明,大多数人认为后者,尽管或许那些参与数学斜不同。

无论如何,软件开发使用持续集成(CI)系统已经被证明是必不可少的生产级软件。这些系统提供的服务和保障支持创建软件,可以上升到高水平的安全和质量。

那么这是使用MATLAB完成吗?

有一些常见的持续集成系统的目的。三个重要的目的是:

  1. 与源代码控制系统
  2. 构建软件,需要编译步骤像c++或Java®
  3. 测试软件,改变了或被重建

连接你的CI系统源代码控制系统依赖于两个系统,这可以独立于MATLAB完成。

至于构建软件,有很多功能的MATLAB确实需要构建步骤,比如写墨西哥人文件,使用MATLAB编写Java类,或者称为p - code MATLAB文件分布。然而,也许最常见的MATLAB活动是使用MATLAB语言编写代码,不需要建立的步骤。现在,让我们讨论这些类型的MATLAB活动范围,没有任何工件(即MATLAB代码本身是工件)。

连接MATLAB

制作和共享MATLAB代码文件,如果你和他们已经在你的源代码控制系统中配置好,我们几乎是那里。我们只需要确保当你改变你的MATLAB源代码测试运行在CI系统,触发构建失败。嗯,这就是我今天想深入探索。请注意,有一个各种各样的CI系统,但让我们看看MATLAB测试连接詹金斯™很受欢迎,与各种各样的系统集成。

要做到这一点,我们需要:

  1. 配置詹金斯推出MATLAB运行测试,并关闭MATLAB
  2. 沟通的结果从MATLAB詹金斯软件测试运行
  3. 度过我们的日子在海滩上放松,而不是手动整合我们的代码更改

启动MATLAB可以通过创建一个新的在詹金斯自由项目。这种类型的项目将使我们能够建立一个简单的构建脚本启动MATLAB和运行测试。在这种情况下我叫工作“运行所有的测试”。

现在我们可以创建我们的构建操作运行shell脚本。

我们使用的shell命令需要简单地开始MATLAB和运行。我们可以用这个简单的shell命令来确认我们可以得到这个MATLAB运行。使用这个脚本并运行测试建立在詹金斯:

/应用程序/ MATLAB_R2014b。应用程序/ bin / matlab -nodisplay - r”disp (“Hello World !”);出口”

连接测试!

太棒了!我们正在联系。下一步是实际运行一些MATLAB。这是取决于你如何测试组织和精确地测试您希望运行。这个练习演示运行测试,位于一个“自我”包及其子包。这是更新后的shell脚本:

/应用程序/ MATLAB_R2014b。应用程序/ bin / matlab -nodisplay - r“runALL_THE_TESTS”

这里的内容runAll_THE_TESTS脚本:

进口matlab.unittest.TestSuite;试一试套件= TestSuite.fromPackage (“测试”,“IncludingSubpackages”,真正的);结果=运行(套);显示(结果);e disp (getReport (e,“扩展”));退出(1);结束退出;

简言之我们想创建一个TestSuite从我们的包和它的子包,然后使用默认TestRunner运行测试。迅速退出的try - catch是允许使用MATLAB在发生一些不可预见的问题,但请注意,在此之前打印的代码扩展错误细节和退出非零状态代码。这将确保詹金斯任务会导致构建失败如果出现严重错误的。

让我们运行另一份工作,看看我们的测试

我们在运行测试的业务!遗憾的是我们只运行它们,而不是以任何方式反应测试失败。你可以看到从上面的蓝色标记工作,詹金斯工作实际上通过尽管许多测试失败。这不是很好!查看测试日志的底部,我们看到163年测试通过,70测试失败,和80年测试没有完成,那么,为什么工作通过?

这里正在发生的事情是,詹金斯CI系统并不知道这个测试运行的结果。工作决定通过或失败的退出状态码MATLAB程序。当测试失败,我们踢了MATLAB完全是快乐的开始,运行失败的测试套件,然后退出了干净。我们需要告诉MATLAB与一个非零退出状态码如果任何测试失败。我们可以通过简单地改变运行脚本的最后一行这样做:

退出(任何([results.Failed]));

运行工作我们可以看到,我们现在看到的测试失败的工作失败

为赢!

几分钟后我们现在在商业与MATLAB与詹金斯CI系统,运行测试和没有工作时,这些测试失败。太棒了!这将工作在所有版本支持测试框架(所有的方式回到R2013a),现在你可以金宝app设置詹金斯运行这些构建定期,如夜间或文件时检查到配置管理系统中。如果你有R2014a或之后我们可以做得更好,但我可以节省下一篇博文。

你自动测试和CI系统MATLAB代码更改吗?如果是这样,哪一个?有什么好处你意识到在你的开发过程吗?一路上技巧你学到了什么?让我们知道在下面评论部分。




发表与MATLAB®R2014b

|
  • 打印

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그인하거나계정을새로만드십시오。