广义系统测试
系统测试,在百度百科里面的定义是:将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。在这里,系统主要是指产品系统,包括软件、硬件、外设和网络,然而正如我在标题所说,除了这种“狭义”的系统,我们还可以定义一个“广义”的系统,它包含狭义系统所处的整个生产环境比如人、工具技术和流程,狭义系统是广义系统的子系统和产物,是由广义系统所决定的,所以我们谈到系统测试,除了狭义系统的测试,也应该考虑如何对广义系统进行测试,也就是人、流程、工具和技术是否能确保可以正确的生产出狭义子系统。
人,其实是最重要的因素,因为广义系统中所有其他的要素都是最终由人来参与和推动的,可以说人乃第一推动力,因此首先选择合适的人参与系统设计开发和测试非常重要,有合适的技术技能,还有良好的沟通能力和团队协作能力都是很重要的条件。当有了合适的人,还应该让他们充分发挥优势特长,并且能够发挥自主性和积极性,每个人都对自己负责的事情尽责,并且能够通过激励手段持续改进,比如鼓励和激励分享活动和有价值的意见和建议。在团队中,还应该考虑到每个成员的持续发展,使得人员的持续发展与产品系统本身的持续发展整合到一起,共同成长。如此,广义系统便拥有了重要的高质量的人的基石。
使用合适的工具和技术也是非常重要的,对于大部分的行业系统,应该选择比较成熟稳定的技术,这样也容易找到合适的掌握该技术的人。选择工具可以优先选择免费开源的,第一个是成本低,第二个是可以根据自己的需求进行定制开发,当然如果有性价比合适,功能也非常满足需要,购买商业收费工具也完全是可行的。关键是,无论是工具还是技术,都是为了更有效的构建高质量的产品系统,工具和技术本身不是目的,因此不应该刻意选择最新最cool的工具技术,反而让我们的产品系统来进行迁就,那就是本末倒置了。
当然技术也是不断更新的,因此不断跟进技术的演进,然后选择合适的技术来改进产品系统,通过敏捷迭代的方式来进行持续更新。敏捷开发流程可以让我们更快的进行更新迭代,更快的试错,如果系统的更新被用户和市场接受,那么便是好的更新升级,否则,快速迭代修复,降低试错成本非常重要。因此,对于快速发展的高科技和互联网行业,流程应该是能够支持快速迭代的,简单不繁复,最好是能够通过工具进行自动化支持,比如持续集成,自动测试和自动发布工具,便可以很大程度上使流程变得更敏捷和高效率。
总的来说,广义系统应该是由合适的人、工具技术和流程组成,只有广义系统本身具有高质量,才更有可能生产出高质量的狭义软件子系统。