您好,欢迎访问三七文档
软件测试实习报告班级:软件122学号:12477218姓名:孙剑峰指导老师:王晖实习时间:15.11.30-15.12.41、需求分析说明书软件行业的产业化发展对软件的质量及其开发效率都提出了较高要求,而软件测试作为软件开发项目管理中软件质量保证的关键,正发挥着越来越重要的作用,自动化测试作为提高软件测试效率的重要手段也被更多的软件开发者所重视。本文根据Windows平台下UI自动化测试的需求,基于.NET框架,采用数据驱动模型设计并实现了一套UI自动化测试系统。使用底层的Windows自动化测试技术通过用户界面(UI)来测试应用程序。这些技术涉及Win32API函数的调用(比如FindWindow()函数)以及向待测程序(AUT)发送Windows消息(比如WM_LBUTTONUP)。所有的Windows控件本质上都是一个窗体(window)。每个控件/窗体都有一个与之关联的句柄(handle),可以通过这个句柄来访问、操纵和检测这个控件和检测这个控件/窗体。对于轻量级的、底层的Windows窗体UI自动化测试程序来说,需要完成的工作主要有以下三类:找到目标窗体/控件的句柄操作这个窗体/控件检测这个窗体/控件2、项目开发计划2.1、计划分项目阶段本项目分为如下部分:资料搜集:搜集关于Win32API的资料与一些官方测试资料。需求分析:分析本项目的软件需求并细化。软件设计:设计软件结构。软件编写:使用不同语言编写软件。实验分析:设计数据库并进行实验。完成报告:完成最终试验测试报告。2.2、计划分项目工作内容系统阶段重点工作完成指标完成时间前期工作1.了解Win32API2.需求分析1.利用官方提供进行WidowsUI2.完成需求报告2015/12/2算法建立1.项目设计2.软件编写1.完成项目设计报告书2.编写程序2015/12/7试验测试1.设计实验2.结果分析1.完成报告2015/12/83、软件设计说明书通过句柄获取待测程序的一个窗口,按钮,图标,输出设备,控件等。使用大量的Win32API调用来操作Windows窗体应用程序。1.使用System.Disgnostics.Process.Start()方法启动程序。2.获得待测程序主窗体的句柄要获得待测程序主窗体的句柄,可使用FindWindow()Win32API函数来解决这个问题。C#要使用Win32API函数FindWindow(),可通过.Net平台的invoke(P/Invoke)机制,P/Invoke相关特性位于System.Runtime.InteropServices命名空间内。C#签名如下:[DllImport(user32.dll,EntryPoint=FindWindow,CharSet=CharSet.Auto)]staticexternIntPtrFindWindow(stringlpClassName,stringlpWindowName);3.获得有名字控件的句柄C#签名如下:[DllImport(user32.dll,EntryPoint=FindWindowEx,CharSet=CharSet.Auto)]9staticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);4.获得无名字控件的句柄获得一没有名字空间的句柄,可通过隐含索引来查找相应控件。5.发送字符给控件我们要发送一个VM_CHAR消息。当按键按下时,VM_CHAR消息会发送给拥有键盘焦点的那个控件。实际上,VM_CHAR是一个Windows的常量符号,它定义为0x0102。wParam参数指定的是被按下按键的字符代码。lParam参数指定的是不同的按键状态码,比如重复次数、扫描码等。有了这些信息,就可以创建相应的C#签名:[DllImport(user32.dll,EntryPoint=SendMessage,CharSet=CharSet.Auto)]staticexternvoidSendMessage1(IntPtrhWnd,uintMsg,intwParam,intlParam);6、鼠标单击一个控件PostMessage()和SendMessage()的参数列表完全一致,他们的不同是:SendMessage()会等相应的Windows消息之后才会返回;PostMessage()不会。相应的C#签名:[DllImport(user32.dll,EntryPoint=PostMessage,CharSet=CharSet.Auto)]staticexternboolPostMessage1(IntPtrhWnd,uintMsg,intwParam,intlParam);7.处理消息对话框消息对话框是一个上层(top-level)窗体,使用FindWindow()函数捕获它。8、处理菜单9、检查应用程序状态10、使用VM_GETTEXT和SendMessage()获得控件状态4、测试用例设计设计待测窗体:待测程序是一个用来做颜色混合的应用程序,设计的窗口如下:菜单栏的结构如下:FileEditHelpNewCutAboutSaveCopyUpdateExitPaste5、软件测试分析报告5.1实验过程:系统:Windows10开发环境:VS20101.安装VS2010开发环境2.编写Form窗体,包括Textbox,ComboBox,Button,ListBox。其核心代码为:privatevoidbutton1_Click(objectsender,EventArgse){stringtb=textBox1.Text;stringcb=comboBox1.Text;if(tb==entercolor||cb==pick)MessageBox.Show(Youneed2colors,Error);else{if(tb==cb)listBox1.Items.Add(Resultis+tb);elseif(tb==red&&cb==blue||tb==blue&&cb==red)listBox1.Items.Add(Resultispurple);elselistBox1.Items.Add(Resultisblack);}}3.创建测试程序初始化测试程序5.2实验结果与分析LaunchingapplicationundertestWarning:processmayalreadyexistFormnotyetfoundFormnotyetfoundFormhasbeenfoundMainwindowshandle=5637668FindinghandletotextBox1Handletotextbox1is5506598Handletocombox1is4654626Handletobutton1is5441374Handletolistbox1is723246Clickingbutton1ClickingawayErrormessageboxFormhasbeenfoundTyping'red'and'blue'toapplicationCheckingthecontentsoftextBox1Fetched3charsTextBox1contains=redClickingonbutton1CheckinglistBox1for'purple'0Testscenarioresult=PassHandletomenuis672596591Handletomainhelpis248775971Indextoaboutis265HandletoHelpItem2is519898823IndextoHelpItem2SubItem2is269Exitingappin4seconds...DoneForm窗体显示为:其中,得出分析:Mainwindowshandle=5637668获得textbox控件句柄成功Handletotextbox1is5506598获得Form中textbox控件句柄Handletocombox1is4654626获得Form中Comobox控件句柄Handletobutton1is5441374获得Form中Button控件句柄Handletolistbox1is723246获得Form中Listbox控件句柄Listbox中显示“Resultispurple”,测试代码输出“Testscenarioresult=Pass”表明本次WindowsUI测试成功。6、源程序测试端主要用于测试的代码为staticvoidMain(string[]args){try{Console.WriteLine(\nLaunchingapplicationundertest);stringpath=D:\\Project\\WindowsUITest\\WinApp\\WinApp\\bin\\Debug\\WinApp.exe;Processp=Process.Start(path);if(p!=null)Console.WriteLine(Warning:processmayalreadyexist);IntPtrmwh=FindMainWindowsHandle(Form1,100,25);Console.WriteLine(Mainwindowshandle=+mwh);Console.WriteLine(FindinghandletotextBox1);IntPtrtb=FindWindowEx(mwh,IntPtr.Zero,null,entercolor);IntPtrcb=FindWindowByIndex(mwh,3);IntPtrbutt=FindWindowEx(mwh,IntPtr.Zero,null,button1);IntPtrlb=FindWindowByIndex(mwh,1);if(tb==IntPtr.Zero)thrownewException(Unabletofindtextbox1);elseConsole.WriteLine(Handletotextbox1is+tb);if(cb==IntPtr.Zero)thrownewException(Unabletofindcombox1);elseConsole.WriteLine(Handletocombox1is+cb);if(butt==IntPtr.Zero)thrownewException(Unabletofindbutton1);elseConsole.WriteLine(Handletobutton1is+butt);if(lb==IntPtr.Zero)thrownewException(Unabletofindlistbox1);elseConsole.WriteLine(Handletolistbox1is+lb);Console.WriteLine(Clickingbutton1);ClickOn(butt);Console.WriteLine(ClickingawayErrormessagebox);Thread.Sleep(1000);IntPtrmb=FindMessageBox(Error);if(mb==IntPtr.Zero)thrownewException(Unabletofindmessagebox);IntPtrokButt=FindWindowByIndex(mb,1);if(okButt==IntPtr.Zero)thrownewException(UnabletofindOKbutton);ClickOn(okButt);Console.WriteLine(Typing'red'and'blue'toapplication);SendChars(tb,re
本文标题:软件测试-实习报告
链接地址:https://www.777doc.com/doc-4878050 .html