Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4734634
  • 博文数量: 206
  • 博客积分: 5240
  • 博客等级: 大校
  • 技术积分: 3224
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 21:40
文章分类

全部博文(206)

文章存档

2013年(13)

2012年(8)

2011年(33)

2010年(152)

我的朋友

分类:

2010-10-02 00:52:05

写一个好的软件,系统设计是必需的,在一些大中型的软件设计中,这点尤为重要。我们所要实现的自动测试程序,要简单的实现,代码量并不是很长,我写的时候也只是在纸上写了几个功能要求,也没有做什么规划。不过为了有一个良好的开始,有必要在这里讲解一下。

  在你写这个程序之前,首先要考虑程序将有一些什么样的功能。我们写的模拟程序支持应该以下功能:

  1. 自动启动程序/自动关闭程序。这是模拟程序在无人值守时的一个重要功能。要实现定时启动、定时关闭、出错重启等。
  2. 鼠标自动移动/点击、自动输入测试数据。这是自动模拟程序最重要的功能。如果没有这两个功能,也就不叫模拟软件了。为了达到模拟的目的,我们必须模拟出 Mouse 的移动和点击、键盘的数据录入,以达到自动测试的效果。
  3. 对于 Web 方式的测试程序,还应该支持自动切换网址。切换到一个新的网址有两种方式,一种是鼠标击击了超链接,另一种是在地址栏内输入网址。
  4. 自动关闭错误窗口以及异常窗口。在自动模拟测试的时候,如果输出了错误的测试数据,系统有可能出现各种错误窗口,如“警告”、“错误”、“程序执行了非法操作”等,我们必须在程序中检测到此类错误并将其关闭,必要时,还应该将其记录 Log 文件,以供分析。
  5. 程序状态的识别。在自动测试的环境下,操作系统环境、网络环境、错误的数据录入,可能会导致程序出现异常而停止运行。我们应该检测到此状态,将其关闭,并重新登录运行。
  6. 联网报警/自动报警/日志记录。无人值守时应该自动记录各种异常状态。这对初期长时间测试程序很有用。联网报警在这样一种情况下写的:我晚上一般要在自己的机器上写程序,由于测试数据要很长时间才能出来,所以把软件装在其他的几台机器上了,如果程序出错或 Windows 当机了,我自己的机器就能收到警报,然而再去处理。——免得老是隔那么久就跑去瞧一瞧。当然,也可以通过声卡或扬声器报警。
  7. 其他功能。其他的一些功能就是一些杂项了。例如把程序隐藏到系统托盘(tray)区域,提供热键支持、定时关机等。

  功能就这么些。当然,你也可以下载一些其他的类似软件,看看他们提供了一些什么样的功能,哪些功能是你所必需的,哪些功能你会比他们做得更好;他们的操作界面是怎样的,等等。

  对于界面,一定要友好简洁。我的界面就三个操作按钮一个状态信息框。如果你的界面设计得较复杂,可以用属性页的方式来控制。

  其他几点应该注意的一些问题:

  1. 要有良好的编程风格。对于一个好的程序员来说,其程序不但要求高效、简洁,还要可读性强。例如变量命名,我们不提倡"a1,a2,a3,aa,bb"的这种命名方式。

  2. 关于API的应用。

      编写此类程序不可避免要与Win API打交道。

      1> 在C/C++中,可以直接调用API函数。

      2> 在DELPHI中,也可以直接调用API函数。但部分API函数和Delphi自带的重名,例如ClientToScreen,调用这些重名API时,要如下:windows.ClientToScreen.

      3> 在VB/PB中,需要用Declare Function声明。

      例如 退出windows/重新启动的API函数ExitWindowsEx(),函数原型如下:

      BOOL ExitWindowsEx( UINT uFlags, DWORD dwReserved );

      在VB中则需声明如下:

      Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

  声明

程序在讲解过程中以C为基础,某些地方会兼顾讲解Delphi的用法。但由于用Delphi和VB搞开发是在很前的事,技术细节疏忘了许多,因此,朋友们若问我关于Delphi/VB方面的技术问题,可能无法给你满意的回答,建议你去相关的主页查询或去主页论坛咨询。对于涉及界面开发的一些简单问题,恕不能一一回答。

阅读(822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~