29
广联达软件股份有限公司 测试管理部 王妍 自动化测试大揭秘之-------- 大量地区化的自动化应对方案

大量地区化解决方案V5

  • Upload
    bqconf

  • View
    542

  • Download
    3

Embed Size (px)

Citation preview

Page 1: 大量地区化解决方案V5

广联达软件股份有限公司 测试管理部 王妍

自动化测试大揭秘之-------- 大量地区化的自动化应对方案

Page 2: 大量地区化解决方案V5

广联达软件股份有限公司

立足工程建设领域,围绕工程项目的全生命周期,提供软件产品和企业信息化整体解决方案

建设领域信息化产业首家上市的软件公司

产品

20余项核心技术、56个软件版权

人员 研发系由300多人组成,其中开发180人,测试110人,并外聘30多名全国业内权威专家

Page 3: 大量地区化解决方案V5

困境 思考 尝试 效果 未来

Page 4: 大量地区化解决方案V5

新产品延后一年半发版

困境 思考 尝试 效果 未来

千行bug率高达16‰

Page 5: 大量地区化解决方案V5

困境 思考 尝试 效果 未来

进度慢

质量差

产能低

Page 6: 大量地区化解决方案V5

怎么办?

Page 7: 大量地区化解决方案V5

试点项目

重点难点问题

相对独立

性价比

有代表性

基于UI自动化

影响小

有资源

难度小

困境 思考 尝试 效果 未来

敏捷 自动化测试

Page 8: 大量地区化解决方案V5

同一产品自动化的持续维护和变更?

用例清晰 脚本清晰

困境 思考 尝试 效果 未来

Page 9: 大量地区化解决方案V5

用例清晰

单个功能

功能组合

重点流程

网状结构的覆盖度

重要程度

投入产出比

困境 思考 尝试 效果 未来

Page 10: 大量地区化解决方案V5

用例清晰

单一test只测试单一功能 控制test的大小和运行时间 Test中尽量减少不必要的数据和操作

困境 思考 尝试 效果 未来

Page 11: 大量地区化解决方案V5

脚本清晰 模块化和分层思想是保证事物条理清晰的重要手段。

表现层

逻辑层

数据层

业务(DSL)

功能操作

数据

Test

函数

数据

困境 思考 尝试 效果 未来

Page 12: 大量地区化解决方案V5

与业务相关,与具体操作过程无关 体现测试用例的内容 易读性高,业务人员也可以阅读

Test

函数

数据

困境 思考 尝试 效果 未来

Page 13: 大量地区化解决方案V5

Test编写模式

构造数据 操作1 操作2 … 取数据(如需要) 验证

困境 思考 尝试 过程 效果

Test

函数

数据

Page 14: 大量地区化解决方案V5

单一职责 构造数据、操作和验证由不同的函数完成。 同一函数只实现单一功能,不包含附加功能。

困境 思考 尝试 过程 效果

Test

函数

数据 优点 降低复杂度,易于编写和维护 职责明确,易于提取公共

Page 15: 大量地区化解决方案V5

专属和共用 专属是指使用范围小,仅与某一故事相关。 共用是指软件的基础功能,多个故事均需要使用

困境 思考 尝试 过程 效果

Test

函数

数据

编写故事 专属函数 其他故事使用 公共函数

Page 16: 大量地区化解决方案V5

数据内容:输入和需要验证的结果 使用方式:取输入数据,操作,将实际结果与数据进行对比

困境 思考 尝试 过程 效果

Test

函数

数据

Page 17: 大量地区化解决方案V5

问题: 数据量庞大,难以维护

当软件算法改变时,所有结果数据均错误,需要重新验证和替换。

Test

函数

数据

困境 思考 尝试 效果 未来

Page 18: 大量地区化解决方案V5

数据是操作和验证中必须要知道的软件的信息 能通过逻辑查找的通过查找定位 脚本中实现软件算法,操作结果和脚本计算结果对比。

Test

函数

数据

困境 思考 尝试 效果 未来

Page 19: 大量地区化解决方案V5

数据组织

相关联的数据放在一起 数据与操作无关 数据与具体测试业务无关

Test

函数

数据

困境 思考 尝试 效果 未来

Page 20: 大量地区化解决方案V5

同一平台下全国31个地区的通性功能的测试? 衍生产品通性功能的测试?

困境 思考 尝试 效果 未来

Page 21: 大量地区化解决方案V5

基础数据不同 操作不同 业务流程不同 增加或缺少业务

1.  替换数据文件 2.  使用工具抽提数据内容 3.  脚本中数据的提取见前文数据部分

困境 思考 尝试 效果 未来

Page 22: 大量地区化解决方案V5

基础数据不同 操作不同 业务流程不同 增加或缺少业务

1.  简单操作函数内部消化(识别界面情况)

2.  重点操作可专门验证 3.  重写改操作对应的函数 4.  重点在于控制函数粒度

困境 思考 尝试 效果 未来

Page 23: 大量地区化解决方案V5

基础数据不同 操作不同 业务流程不同 增加或缺少业务

1.  简单流程区别函数内部消化(识别界面情况)

2.  重点流程可专门验证 3.  重写流程对应的函数 4.  重点在于函数的分层

困境 思考 尝试 效果 未来

Page 24: 大量地区化解决方案V5

基础数据不同 操作不同 业务流程不同 增加或缺少业务 1.  业务划分清晰

2.  不同的业务测试由不同的类完成 3.  是否测试某业务可配置

困境 思考 尝试 效果 未来

Page 25: 大量地区化解决方案V5

特殊情况下的测试?

大量重复操作下的测试 多程序同时测试 效率测试 对XML、EXCEL的测试

困境 思考 尝试 效果 未来

Page 26: 大量地区化解决方案V5

综合举例

BEGIN { @@地区 = '陕西' require 'gtf_for_test.rb' add_rel_path(__FILE__) require '数据冒烟公共函数' class Test_AA < Test::Unit::TestCase include Module_数据冒烟公共函数

def get_value return 提取所有库信息(地区, "遍历定额子目", true, false, false, false) end end r = Test_AA.new('get_value') $a = r.get_value } module Add_test def self.included(klass) $a.each do |item| klass.send(:define_method, "test_#{item.values_at("计价方式","清单库","定额库","清单专业").join('_')}数据冒烟".to_sym){单个工程数据冒烟(item)}#动态生成方法

end end end class Test_单位工程冒烟 < Test::Unit::TestCase .... include Module_数据冒烟公共函数

include Add_test def test_aa end def 单个工程数据冒烟(工程新建信息) 新建单位工程(*工程新建信息.values_at("计价方式","工程名称","清单库","定额库","清单专业","定额专业", "估价表")) .... ensure should(报错标志, "当前报错的库,清单库: #{工程新建信息["清单库"]}, 定额库: #{工程新建信息["定额库"]}, 清单专业: #{工程新建信息["清单专业"]}, 定额专业: #{工程新建信息["定额专业"]}, 估价表 #{工程新建信息["估价表"]}") end end

困境 思考 尝试 效果 未来

Page 27: 大量地区化解决方案V5

困境 思考 尝试 效果 未来

XX地区化开发 手工测试(本地区)

纯手工测试的地区化产品开发状况:

加入自动化测试的地区化产品开发状况:

XX地区化开发 手工测试(本地区)

手工回归测试(其他地区一)

手工回归测试(其他地区二) …自动化回归测试(本地区、其他地区一、二、三…)

3倍于程序的自动化测试代码 每周发版 每天相当于数千万次的人工操作验证

Page 28: 大量地区化解决方案V5

自动化测试工作展望

自动化测试可用于开发自测 自动化测试驱动开发… 自动化测试是一个综合性产品,不同部分选用最经济实惠的工具或语言

困境 思考 尝试 效果 未来

Page 29: 大量地区化解决方案V5

一个民族有一些关注天空的人,他们才有希望

谢谢