聊到集成测试、单元测试等测试分类,我想大多数人都有类似困惑或讨论,集成测试和 E2E 测试到底有啥区别。甚至还有一些系统测试、配置项测试等概念,不但让我们这种非 QA 专业的人弄不清楚,在和我们的 QA 同学讨论时也很难得到清晰的结论。
家里有一台古董级别的笔记本,掌托和键盘几乎已经被磨花了,一天突然想检查下有没有特别的资料然后好处理掉它。一份测试相关的国标文档(GB/T 15532-2008)吸引了我的注意,这份文档来自于刚毕业时在四川省软件测试中心实习期间,而我几乎已经忘记了那段经历。
翻看这份文档让我打开了一个新世界的大门,我们目前讨论研究的很多问题包括测试分类的定义,已经被业界讨论过很多次,甚至被制定成清晰的文档和规范。
不仅是 GB/T 制定了相关标准和大量方法,IEEE 和 IOS 也定义了大量标准供业界参考。在软件工程中,了解相关标准能给我们带来非常多的好处,能帮助我们更好地做技术选型、企业应用集成、持续演进以及借力技术生态。
采用标准技术的优势
发展成熟
在计算机科学领域,技术标准最成熟,和学术界最接近的是密码学。在软件行业中,最有意思的是很多人对造轮子非常感兴趣(包括我),不过有一些轮子我不建议自己造,其中之一就是加密算法。不止一个人在聊天中谈起对信息安全的看法时说,“要是我开发一个自己的加密算法、只有我自己的知道(甚至很多真的这么干了),肯定是天底下最安全的。”这是一种非常朴素的信息安全认识,自己的创造的“加密算法”也只是根据特定规则对信息的混淆和变换,安全性依赖于加密算法而非密匙,这甚至落后于凯撒密码。
现代密码学已经有大量的对称加密、非对称加密、HASH公开算法,甚至建立了一套完整的通信信息安全基础设施(PKI)。因为加密算法足够可靠,对于普通开发者而言,保证信息安全的是密匙而不是加密算法。与其闭门造车,不如选择 RSA 等大师们的成果。
上面的例子是想说标准的技术大多经过学术界、工业界的验证,相对来说比自己捣腾一个更为靠谱。
技术生态
选择标准技术另外一个好处是保持开放,能构建出一个技术生态。
稍具规模的公司或者组织都有一个中心化的账户管理体系,在软件公司我们有一大套内部系统和软件需要和账户系统进行对接,账户系统还被要求以很细致的粒度对权限进行管理。比如办公室的 WIFI、JIRA、邮件、WIKI 等平台需要对接账户系统,一些采