技术开发 频道

SOA开发技能之测试人员

    测试需求

    可以把需求分解成三个部分:人力、工具与治理。那么一个成功的SOA测试人员应该具备哪些特征呢?答案是取决于所部署的架构。而这个架构又与工具和已决定的策略有关。下面是一个在讨论架构的典型分层时经常用到的图。

    在讨论开发人员时,我提到过有必须在各层进行专业的细分化。这对测试人员也一样。对于开发人员各层之间的工作是同时进行的。我建议采用迭代开发和测试方式,而这也意味着各层的测试工作会同时进行。

    我认为下面是一些具有相当高存在必要性的职位。当然某些人可以同时完成多个职位的任务。

    SOA测试设计师

    他是一个有胆量的领导角色,对SOA、分布式计算等有广泛的了解,有集成测试和代码/脚本编写经验,了解业务。你可能需要亲自出马才能找到这样的人,或者也可以请一位咨询师来协助你的高层测试人员。

    SOA测试主管

    他或他们必须了解架构的所有层(请别忘记安全性),并且能够设计可以同时验证架构和治理模型的测试方案。他们应该了解如何进行黑盒、白盒和灰盒测试。抽象的服务需要在安全性、性能和回归等方面进行广泛的测试。再加上服务的版本要求和服务消费者能以意想不到方式预先体验服务,测试用例的组合也在飞速的增长。测试主管需要根据测试推测风险,并在风险、时间和成本之间取得平衡点。这比传统的多层架构的情况要棘手得多。

    业务过程测试人员

    应该对业务过程进行建模并调用几个服务。根据变量与常量,这个流程需要一系列的决策点。并且它还可能引发像通知、警告、其它过程、错误处理机制、服务等一系列事件。测试人员要将业务过程作为一个独立的个体进行验证。比如,如果这个业务过程是"验证信用卡",那么测试人员需要确定这个过程正确地对输入进行了处理、准确地运行了验证程序、并生成了合适的结果。在这一点上,测试人员不需要关心其它的过程或服务。这些测试人员必须与业务部门和/或业务分析员紧密合作,但不需要有像主管或架构师那么宽的知识面(当然有的话也会很有用)。这就叫从业务的角度进行测试。

    集成测试

    这些测试人员必须是非常技术性的,了解XML、SOAP、WSDL、网络与电信概念、状态,以及各种平台与技术(Java与.Net、Windows、Unix/Linux与大型机等)。

    用户界面测试人员

    公司可能已经有足够的人可以测试UI了。如果你的公司使用了混合应用、无线设备或者面向消费者的UI,那么测试的复杂性也会极大地增长。这些测试人员可能还需要了解AJAX、RIA、门户技术、RSS以及一系列社会性软件。

    数据服务测试人员

    这些测试人员必须了解数据建模、数据库CRUD操作、转换、安全性和功能、验证等还有许多方面的概念。一切的一切都起源于数据,如果这一层出现了错误,那么其它的任何结果都必须是失败。你必须有一个强有力的测试主管工作在这个数据服务层,因为数据是任何成功部署的基础。

    其它需要关注的领域

    成功的关键还是加速上市,而测试自动化则是促成这一点的关键。性能测试是非常非常重要的,企业应该进行对所有服务进行模拟测试以预测将来的性能。安全模型与治理模型的验证也应该成为完整的测试策略的一部分。每一位负责设计安全性测试方案的人都应该阅读并充分理解这本书。

    结束语

    根据我的个人经验来看,做架构和开发工作需要先在测试与安全上投入尽可能多的精力,要保证企业在测试培训与工具方面有足够的资金。在几年前的一个项目中,由于初期研究阶段过于注重开发和开发人员,而没有为测试拔出足够的资金,而导致失败。千万不要再犯同样的错误。开始SOA相关的业务已经很困难,但是想退回去更是难上加难——特别是在还没有实现任何商业价值的时候。

0
相关文章