为纯为纯OpenWhisk操作创建单元测试操作创建单元测试
OpenWhisk 应用程序的模块化性质,使得为纯函数式 — 这意味着没有任何副作用,也不依赖于外部状态的操作创建单元测试
变得很容易。在本教程中,将学习如何半自动地创建单元测试,以及如何运行这些测试来验证代码更改没有造成任何破坏。
纯函数是满足以下两个条件的函数:
1.函数的结果仅依赖于输入参数。任何时候使用相同的输入参数调用该函数,都会产生相同的结果。
2.该函数没有任何副作用;获得返回值是运行该函数的唯一效果。
使用诸如 OpenWhisk 之类的函数即服务 (FaaS) 框架时,对于任何作为纯函数的操作,都可以使用您在本文中学到的方法来
应用自动 QA。
构建您的应用程序需要做的准备工作
OpenWhisk 和 JavaScript 的基本知识
一个免费 IBM Cloud 帐户
运行应用程序获取代码
单元测试
一个实用的应用程序可能由多个模块组成,每个模块都执行一个特定操作。除了对应用程序进行整体测试之外,单独测试每个
模块也很有用。这种测试类型称为单元测试,该测试使您能够识别 bug 的位置,并相对容易地修复它们。
单元测试的一个挑战是,您需要识别每个模块的可能输入和与其匹配的输出。如果模块很简单,此过程可能很容易 — 但是模
块越复杂,此过程可能越困难。对于深度嵌入在应用程序中且人类不可读的输入或输出的模块,尤其如此。
对于充当纯函数的操作,可以在使用应用程序时通过查看如何调用输入和输出,来自动识别这些输入和输出。然后,当程序员
更改模块时,您可以使用相同的输入重新运行它,以查看更改是否造成了任何破坏。
样本应用程序
本教程的目的是展示 QA 技术,所以样本应用程序非常简单:一个词典应用程序,允许用户选择一个英文单词,然后提供其他
语言的等效词汇。
创建应用程序序列
要了解如何在 OpenWhisk 中编写一个面向用户的应用程序,请阅读我的教程“为一个联网环境构建一个智能锁”(第 1、2 和 5
小节)。与该应用程序对应,本教程中的应用程序由 3 个操作组成:
1.getTranslation
2.translation2tables
3.tables2html
您将在 OpenWhisk 中创建所有这 3 个操作,它们通常是纯操作,但是当 getTranslation 在 error 参数中获得了一个值时,它
可能变得不纯。
创建这些操作后,按以下方式将它们组合到一个序列中,并让该序列可从浏览器访问:
1.单击左侧边栏中的 Develop。
2.在 MY ACTIONS 下,选择序列中的第一个操作 getTranslation。
3.单击 Link into a Sequence。
4.单击 MY ACTIONS 磁贴,选择第二个操作 translation2tables,然后单击 Add to Sequence。
5.单击 Extend,并重复上一步来添加第三个操作(也是最后一个操作)tables2html。
6.单击 This Looks Good。
将新序列命名为 UnitTestsApp。单击 Save Action Sequence,然后单击 Done。
该序列应该类似于下图: