软件Software架构设计:软件Software自动测试架构设计



目前市场上已经有了不少自动测试工具不过满足自己需求测试工具却很难找到或者是难以支付其昂贵费用对于在Linux/Unix后台运行软件Software产品自己开发个自动测试工具不但可以满足软件Software测试需求还可以节省大笔费用

这个自动测试系统架构设计是基于Linux/Unix后台运行软件Software产品架构思想源于主流测试工具和前辈实战经验

软件Software自动测试其实就是种思想不管是市场上主流测试工具还是自主开发测试工具都只是工具关键是怎样去组织个工具怎样将工具应用于软件Software测试中

第2章系统架构
2.1设计思想
1.自动测试组成:自动测试主要有几部分组成:(1)、自动测试工具(2)、测试案例(3)、模拟接口(4)被测试软件Software(5)自动编译和安装

2.自动测试工具:自动测试工具主控不需要理解业务所有业务逻辑和测试数据都写在测试案例中主控执行每个测试案例中指令完成每个测试案例测试测试结果记录在指定文件中

3.测试案例:业务逻辑和测试数据体现在测试案例中个完整测试案例应该包括测试条件预置、测试步骤、每个测试步骤输入和输出、预期结果、实际测试结果获取、实际测试结果和预期测试结果对比每个测试动作为个操作指令每个操作指令包括指令ID、输入和输出主动测试工具就是通过执行测试案例这些指令来完成自动测试

4.黑盒测试:被测试软件Software对于自动测试工具来说个黑盒子自动测试工具不关心被测试软件Software内部逻辑和业务流程关心被测试软件Software接口以及每个接口输入和输出自动测试工具向被测试软件Software输入测试数据在相应接口获取测试结果如果测试结果和预期结果相致则测试通过否则测试失败

5.模拟接口:和被测试软件Software打交道各个接口需要模拟在必要时可以设置模拟接口给被测试软件Software返回值以达到测试

6.自动编译和测试:自动编译就是自动到源代码管理服务器编译软件Software将软件Software上传到测试服务器自动测试就是自动更新或安装被测试软件Software启动自动测试工具执行自动测试案例记录测试结果并将测试结果以邮件方式发送给相关人员

7.测试环境恢复:在某个测试案例执行完成后不管测试是成功还是失败都需要恢复被该测试案例特殊化后测试环境

8.重用策略:公用模块提取出来被别模块或功能提高模块公用性减少冗余代码

9.自动测试工具模块组成:

(1)主控:读取测试案例以及每个测试案例操作指令根据区别操作指令区别指令接口执行每个测试案例指令记录测试结果

(2)指令接口:是测试案例操作指令和具体测试步骤实现的间桥梁和测试案例操作指令相对应指令接口就是实现测试案例操作指令所需要做事情动作完成的后将该动作操作结果返回给主控

(3)驱动:驱动是实现具体指令操作被指令接口完成具体测试工作并将测试结果返回给指令接口

(4)辅助功能:实现系统辅助功能比如案例文件处理底层处理文件处理或者数据库操作

2.2系统架构

2.3系统流程图
[Page]

第3章自动测试核心设计
3.1系统组成
自动测试工具由主控、指令接口、驱动和辅助功能组成

3.1.1主控
控制模块不理解业务把业务逻辑和测试数据全部写在案例里控制模块读取所有需要测试测试案例以及每个测试案例个操作项动作区别接口处理模块来实现整个测试流程

控制模块处理流程:

1.读取命令获得需要执行命令以及配置文件

2.分析命令以及命令参数比如如果命令是想查看帮助则打印帮助提示;如果命令是执行测试案例则开始执行自动测试测试案例

3.分析配置文件获取测试案例存放目录需要执行案例ID文件数据库连接信息测试案例所使用到参数(注:在测试案例执行中未必执行完整个测试案例测试案例中某些动作可能不需要执行可在配置文件或测试案例中进行配置)

4.根据测试案例存放目录以及测试测试ID文件获取具体需要测试测试案例

5.获取每个测试案例需要执行动作指令以及输入数据

6.逐个执行测试案例根据测试案例动作指令区别接口执行区别动作



7.某个测试案例测试完成后获取该测试案例测试结果并将测试结果输出到结果记录文件中

8.继续执行下个案例直到所有测试案例都被测试完为止

3.1.2指令接口
是测试案例操作指令和具体测试步骤实现的间桥梁和测试案例操作指令相对应指令接口就是实现测试案例操作指令所需要做事情动作完成的后将该动作操作结果返回给主控接口模块负责和接口数据处理包括输入和输出同时必须包括数据处理结果主控在读取了测试案例操作指令的后这些操作指令所对应指令接口执行相应操作如果该接口执行操作成功则主动继续下步操作否则测试终止只有所有测试步骤指令都被成功的行测试案例才通过

为了方便管理和所有接口都例子化都个接口工厂中在实现了相应指令接口后需要将这些指令接口增加到接口工厂中接口工厂根据案例中接口类型来区别接口例子

指令接口事实上就是执行测试案例中每个指令要求做事情比如输入测试案例测试数据、执行相应测试步骤、获取测试结果、对比测试结果指令接口完成个指令的后将这个指令操作结果返回给主控

比如话单检查指令接口指令接口需要做事情就是化要监听话单文件获取话单文件把获取到话单文件同期望话单进行比较返回比较结果给主控

又如:短信接收发送指令接口指令接口工作就是实现发送MT收取状态报告并把收到状态报告状态值和期望状态值进行比较返回比较结果给者;收到本地MO并把收到到本地MO和期望MO进行比较返回比较结果给

3.1.3驱动
驱动是实现具体指令操作被指令接口完成具体测试工作并将测试结果返回给指令接口驱动是具体操作完成者

比如话单检查驱动用于对特定话单格式话单文件进行跟踪并且能够把跟踪结果解析成话单话单检查指令接口会话单驱动完成具体每条话单各个子段比较驱动完成检查后将结果返回给指令接口

3.1.4辅助功能
实现系统辅助功能比如案例文件处理底层处理文件处理或者数据库操作 [Page]

3.2测试案例
3.2.1测试案例组成
测试案例包括了业务逻辑、测试步骤以及输入和输出使用XML存储测试案例可以提高测试案例可读性、通用性以及可维护性不过这样有个不好地方就是测试案例看起来会比较庞大不够轻盈但是非常清晰即使是对测试案例完全不熟悉只要看了也自然很快就对业务流程有了个大致了解;而且业务逻辑体现在测试案例也会增强系统扩展性如果需要增加某些测试步骤或修改测试数据只需要修改测试案例即可

测试案例主要由测试案例ID、测试案例描述、以及测试操作指令所组成测试案例ID就是测试系统案例ID测试描述包括测试案例简要描述、测试产品名称、测试功能点、测试版本、测试类型以及测试案例作者测试操作指令是测试案例核心每个测试步骤就是个操作指令操作指令顺序和业务逻辑或测试步骤相关每个操作指令包括:

(1)操作指令ID在TestCase中唯

(2)操作指令接口名称自动测试工具所提供指令接口名称个TestCase中可以出现多次;

(3)操作指令接口动作名称自动测试工具所提供指令接口具体操作名称个TestCase中可以出现多次自动测试工具操作指令接口名称和操作指令接口动作名称区别指令接口功能完成相关动作;

(4)操作指令描述;

(5)模拟接口信息如果需要使用到模拟接口需要将模拟接口相关信息再测试案例中输入模拟接口相关信息应该参数化;

(6)输入数据也就是执行这个操作步骤所需要输入测试数据或是预期结果或延时等待时间等

(7)输出数据也就是这个操作步骤输出结果

个测试案例就是个完整测试流程由区别操作步骤组成每个操作步骤就是个操作指令个完整测试案例可能包括这些操作指令:

(1)预置测试环境比如修改某些特殊配置、设置模拟接口返回值、检查某些数据等;

(2)测试步骤个测试案例可能有多个测试步骤每个测试步骤为个操作指令操作指令输入就是测试需要输入数据动作就是需要执行测试操作测试案例测试就是由系列操作指令完成;

(3)检查测试结果个测试案例中可能存在多个检查点每个检查点为个操作指令这操作指令输入就是预期测试结果操作指令动作就是获取测试结果并将测试结果和预期测试结果相比较如果相等则测试通过否则测试失败;

(4)恢复测试环境测试完成后应该恢复测试环境原始数据或相关资源

为了提高测试扩展性和灵活性测试案例中测试数据应该可以参数化这样即使是测试数据发生了变化只需要修改参数值即可而不必把所有测试案例某些数据逐个修改这些参数以及参数值可以存放在配置文件中被测试案例引用自动测试工具根据测试案例参数名称到相应配置文件中读取这个参数



3.2.2测试案例命名
为了提高测试可维护性测试案例命名必须规范标准在此约束为测试案例名和测试案例ID

3.2.3测试案例存放
对于区别产品测试案例应该存放在区别主目录中对于同个产品测试案例根据区别功能存放于区别子目录中每个主目录或子目录应该有个测试案例ID文件在这个文件中测试案例会被自动测试工具执行自动测试测试案例ID文件中行为个测试案例每个测试案例由序列号、测试案例ID和该测试案例描述组成测试案例存放位置自动测试工具可通过配置文件获取


3.3自动测试执行
3.3.1测试案例编写和测试
自动测试工具实现后接下来很大部分工作就是测试案例编写和测试了根据业务逻辑和自动测试案例规范标准将测试案例系统中测试案例转化成自动测试案例脚本自动测试案例脚本编写完成后对这些脚本进行测试确保自动测试案例脚本能够被正确地执行且正确地测试了测试案例所描述功能在利用自动测试工具进行测试的前首先要测试自动测试工具和案例能否正确地进行相关功能测试否则自动测试结果不可信自动测试也就没有意义了 [Page]

3.3.2自动测试执行
自动测试案例编写完成后自动测试就可以在无人干预情况下进行测试了

(1)需要进行自动测试测试案例ID写在个文件中自动测试工具只执行这个文件中测试案例;

(2)自动测试案例目录、数据库连接、模拟接口IP和Port等参数写在配置文件中自动测试工具会到配置文件指定目录读取测试案例也会读取自动测试工具所使用到数据库连接信息和模拟接口信息;

(3)自动测试案例所使用到参数写在参数配置文件中自动测试工具根据自动测试案例参数名字到参数配置文件中读取该参数值代替自动测试案例中参数;

(4)指定测试结果输出文件自动测试工具在测试完个测试案例的后将这个测试案例测试结果输出到测试结果文件中测试结果文件每行表示条测试案例每条测试案例输出结果包括测试案例ID测试案例功能描述和测试案例结果;

(5)自动测试工具在测试案例过程中需要记录测试日志包括测试案例ID读取测试案例内容测试步骤各个测试步骤测试结果测试结果比较等;

(6)自动测试工具自动执行所需要测试案例并记录测试结果测试工程师在测试完成后查看测试结果测试成功测试案例意味着这个功能测试通过对于测试失败测试案例需要根据日志分析原因如果是测试环境或测试脚本引起则修改环境或测试案例或自动测试工具否则需要记录bug通知开发修改测试失败测试案例所发现问题

第4章自动编译和自动测试
4.1.1自动编译
自动编译就是在源代码管理服务器上进行自动编译对编译结果进行分析并将编译成功并且是自动测试环境需要文件更新到测试环境中

自动编译过程可分为:

(1)Update源代码服务器上需要编译所有相关代码需要编译代码路径在配置文件中读取;

(2)自动编译需要编译源代码;

(3)分析源代码编译结果只有编译成功了执行文件用于自动测试才有意义将编译结果上传到测试服务器并发送给相应人员;

(4)将需要更新文件打包并上传到测试服务器并将上传结果发送给相关人员

自动编译可以写个脚本交给crontab去自动编译实现无人干预下编译自动化

4.1.2自动测试
这里所说自动测试就是自动更新或安装被测试软件Software自动启动被测试软件Software然后跑自动测试案例进行自动测试并将自动测试结果发送给相关测试或开发人员

自动测试过程可分为:

(1)到自动编译结果上传目录获取自动编译结果分析自动编译结果如果自动编译失败则自动测试结束发送测试结果给相关人员否则进行步;

(2)到FTP被测试软件Software安装文件上传目录获取FTP上传结果分析ftp上传结果如果ftp失败则自动测试结束发送测试结果给相关人员否则进行下步;

(3)到被测试软件Software安装文件上传目录获取安装文件;

(4)停止原正在运行被测试软件Software如果是全新安装测试环境不需要执行这步;

(5)进行软件Software安装或更新:如果是个全新测试环境则进行软件Software安装如果是已经存在测试环境则更新被测试软件Software;

(6)启动被测试软件Software;

(7)自动测试工具进行自动测试记录测试结果;

(8)所有自动测试案例都测试完成的后分析测试结果将测试结果发邮件通知相关测试和开发人员

自动编译可以写个脚本交给crontab去自动测试实现无人干预下测试自动化

配置文件应该包括以下信息:

(1)自动编译结果文件和FTP结果文件路径、文件名;

(2)被测试软件Software安装文件或更新文件路径; [Page]

(3)存放自动测试结果路径和文件名;

(4)停止原测试软件Software脚本路径和文件名;

(5)启动被测试软件Software脚本路径和文件名;



(6)启动自动测试软件Software进行自动测试脚本路径和文件名;

(7)测试结果发送邮件地址

第5章编后语
来到新公司战战兢兢地接下了自动测试重任在软件Software测试领域这是我以往接触得最少部分也是我最没把握部分不过同时也是我最想学习部分自动测试在很早以前就想花时间去研究了不过老公司产品限制自己没有足够决心去研究所以直没有动作这篇文章完成后自己忽然有了种豁然开朗感觉我知道我已经找到了自动测试感觉

Tags:  软件测试自动化工具 软件自动化测试 软件测试设计 软件架构设计

延伸阅读

最新评论

发表评论