软件测试_实习报告范本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试实习报告
班级:软件122
学号: 12477218
姓名:孙剑峰
指导老师:王晖
实习时间: 15.11.30-15.12.4
1、需求分析说明书
软件行业的产业化发展对软件的质量及其开发效率都提出了较
高要求,而软件测试作为软件开发项目管理中软件质量保证的关键,正发挥着越来越重要的作用,自动化测试作为提高软件测试效率的重要手段也被更多的软件开发者所重视。本文根据Windows平台下UI 自动化测试的需求,基于.NET框架,采用数据驱动模型设计并实现了一套UI自动化测试系统。使用底层的Windows自动化测试技术通过用户界面(UI)来测试应用程序。这些技术涉及Win32API函数的调用(比如FindWindow()函数)以及向待测程序(AUT)发送Windows 消息(比如WM_LBUTTONUP)。所有的Windows控件本质上都是一个窗体(window)。每个控件/窗体都有一个与之关联的句柄(handle),可以通过这个句柄来访问、操纵和检测这个控件和检测这个控件/窗体。对于轻量级的、底层的Windows窗体UI自动化测试程序来说,需要完成的工作主要有以下三类:
找到目标窗体/控件的句柄
操作这个窗体/控件
检测这个窗体/控件
2、项目开发计划
2.1、计划分项目阶段
本项目分为如下部分:
资料搜集:搜集关于Win32API的资料与一些官方测试资料。
需求分析:分析本项目的软件需求并细化。
软件设计:设计软件结构。
软件编写:使用不同语言编写软件。
实验分析:设计数据库并进行实验。
完成报告:完成最终试验测试报告。
2.2、计划分项目工作内容
系统阶段重点工作完成指标完成时间
前期工作 1.了解
Win32API
2.需求分析1.利用官方提
供进行
WidowsUI
2.完成需求报
告
2015/12/2
算法建立 1.项目设计
2.软件编写1.完成项目设
计报告书
2.编写程序
2015/12/7
试验测试 1.设计实验
2.结果分析
1.完成报告2015/12/8
3、软件设计说明书
通过句柄获取待测程序的一个窗口,按钮,图标,输出设备,控件等。使用大量的Win32API调用来操作Windows窗体应用程序。
1. 使用System.Disgnostics.Process.Start()方法启动程序。
2. 获得待测程序主窗体的句柄
要获得待测程序主窗体的句柄,可使用FindWindow() Win32 API 函数来解决这个问题。
C#要使用Win32 API函数FindWindow(),可通过.Net平台的invoke(P/Invoke)机制,P/Invoke相关特性位于System.Runtime.InteropServices命名空间内。
C#签名如下:
[DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
3. 获得有名字控件的句柄
C#签名如下:
[DllImport("user32.dll", EntryPoint = "FindWindowEx",CharSet = CharSet.Auto)]9
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
4. 获得无名字控件的句柄
获得一没有名字空间的句柄,可通过隐含索引来查找相应控件。
5. 发送字符给控件
我们要发送一个VM_CHAR消息。当按键按下时,VM_CHAR消息会
发送给拥有键盘焦点的那个控件。实际上,VM_CHAR是一个Windows 的常量符号,它定义为0x0102。wParam参数指定的是被按下按键的字符代码。lParam参数指定的是不同的按键状态码,比如重复次数、扫描码等。有了这些信息,就可以创建相应的C#签名:
[DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto)] static extern void SendMessage1(IntPtr hWnd, uint Msg, int wParam, int lParam);
6、鼠标单击一个控件
PostMessage()和SendMessage()的参数列表完全一致,他们的不同是:SendMessage()会等相应的Windows消息之后才会返回;PostMessage()不会。相应的C#签名:
[DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Auto)]
static extern bool PostMessage1(IntPtr hWnd, uint Msg, int wParam, int lParam);
7. 处理消息对话框
消息对话框是一个上层(top-level)窗体,使用FindWindow()函数捕获它。
8、处理菜单
9、检查应用程序状态
10、使用VM_GETTEXT和SendMessage()获得控件状态