分享
分销 收藏 举报 申诉 / 24
播放页_导航下方通栏广告

类型VS-测试功能之旅:编码的UI测试通过编写测试代码的方式建立UI测试.doc

  • 上传人:精***
  • 文档编号:2626796
  • 上传时间:2024-06-03
  • 格式:DOC
  • 页数:24
  • 大小:854.54KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    VS 测试 功能 编码 UI 通过 编写 代码 方式 建立
    资源描述:
    VS 测试功能之旅:编码的UI测试通过编写测试代码的方式建立UI测试 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 24 个人收集整理 勿做商业用途 VS2010 测试功能之旅:编码的UI测试(4)—通过编写测试代码的方式建立UI测试(下)  回顾   最近比较忙,距离上次更新的时间较久,见谅。   在本章上部分,介绍了“添加用户"窗口的测试代码编写.想必大家也看到了,在UIMap.cs文件中实现自定义编码是一件很轻松的事情,接下来将介绍下个部分,查询用户窗体的测试代码的编写,以及他们测试的关联。   示例程序介绍   系统主窗口:(下载点我)   该系统拥有两个功能,“添加用户”和“查询用户":   点击添加用户后,进入添加用户子窗体:(“添加用户”窗口的测试代码编写在上部分已经实现)   如果在之前的主窗口,点击查询用户,则进入查询用户子窗体:   注:系统默认自带了5个用户TestUser1, TestUser2, TestUser3, TestUser4, TestUser5。   这个窗体不会弹任何提示框,默认进入窗体时,DataGridView里面没有加载数据,现在进行一个说明:   查询条件—用户名:表示是否按用户名查询(非模糊查询),如果不输入,默认为不按其查询.   查询条件-用户类型:有三个选项“所有”,“管理员”,“一般用户”。   查询条件-日期:表示是否按日期查询,如果勾上了日期CheckBox,则旁边的DateTimePicker会启用,然后选择一个具体的日期。   按钮-查询:就会按以上条件查询。   按钮-重置:用户名清空,用户类型变成所有,日期取消勾选.   文本框-用户备注:当查询出数据以后,每选择DataGridView里面中的一行数据,用户备注TextBox会自动加载当前行的用户备注。   如何设计测试   现在需要明确的就是,我们既需要检查“查询用户"窗口的基本功能,又需要确定之前在“添加用户"窗口添加的用户是否被添加了进来,所以这里的检查尤其重要,根据刚才的功能描述,现在需要编写测试设计。(在看下面的设计之前大家可以先试着自己设计下) .   自动化测试,关键不在技术,而是在测试设计上,所以这里需要设计得比较全面: 步骤序号 操作步骤 检查点 1 在主窗口菜单点击用户查询 检测查询用户子窗口是否弹出 2 用户名为空,用户类型为“所有",不勾选时间,点击查询,记录查询出的用户行数,程序默认选中第一行,这时我们选中第二行 检测“用户备注”一列的值是否和下方的“用户备注”文本框的值一致 3 加的用户,其他条件不变,点击查询(例如,在上个部分的示例中,我们使用的是”TestUser6") 查询出用户名为TestUser6的一条数据 4 用户名为一个不存在的用户“testuser100”,其他条件不变,点击查询 未查询出数据 5 将用户名设置为空,其他条件不变,用户类型为“管理员”,记录查询出的行数 查询出所有为“管理员”的用户(注,为了方便,这里没有使用从数据库比对,而只使用查询条件与查询出的数据比对,实际项目中可能使用数据库比对) 6 将用户类型设置为“一般用户”,其他条件不变,记录查询出的行数 查询出所有为“一般用户”的用户 7 使用刚才用户类型分别为“所有",“管理员",“一般用户"查询出的数据行数,进行比对 一般用户行数+管理员用户行数=所有用户行数 8 用户名为空,用户类型为“所有”,勾选时间,并进行选择“2008-1-11” 查询出所有添加时间为“2008-1—11”的用户 9 将条件设置为刚才我们在添加用户窗口添加的用户信息(使用我们在上一个示例中使用的值,如”TestUser6",”一般用户",时间为添加时间,时间这个需要用到某个变量来记录) 查询出对应的一条数据 10 点击重置按钮 用户名为空,用户类型为“所有”,不勾选时间 11 点击退出 退出窗口   接下来将以上的检查点转换为代码。   对测试进行编码   我们可以接着上次录制的代码来编写,因为在上个部分对于某些编写方式(例如先捕获对象再编写和先录制再转移修改的方式)已经描述得很详细了,下面默认使用这些方式,因此就不一一阐述对象的捕捉过程了。这里只介绍上个部分没有介绍的注意点和和给出主要代码。   由于是接着上个部分的代码写,这里需要注释掉AddUserUIMap.cs中Step7_CloseWindows的两句代码,以免他在测试结束后将主窗口关闭掉: public void Step7_CloseWindows() { //操作步骤 bool isClosed; Mouse.Click(this.UI添加用户Window。UI取消Window。UI取消Button, new Point(1, 1)); //和WaitForControlExist相反,这里是最长等待他3秒关闭,如果3秒内关闭返回true,否则为false isClosed= this.UI添加用户Window.WaitForControlNotExist(3000); // 这里添上了注释,以免将主窗口关闭掉 // Mouse。Click(this。UI系统主窗口Window.UI系统主窗口TitleBar。UICloseButton, new Point(1, 1)); // isClosed &= this。UI系统主窗口Window。WaitForControlNotExist(3000); //检查点 Assert.IsTrue(isClosed, "点击退出,检测是否退出添加用户子窗体和主窗体失败"); }本文为互联网收集,请勿用作商业用途文档为个人收集整理,来源于网络   接下来,我们通过在项目中添加新项的方式新建一个SearchUserUIMap。uitest,在这个UIMap的.cs中来编写我们对于“查询用户"这个窗口的操作.   实现步骤1 步骤序号 操作步骤 检查点 1 在主窗口菜单点击用户查询 检测查询用户子窗口是否弹出   相信这个很简单,两下就可以通过录制然后修改的方式编写出来: public void Step1_ClickSearchUser() { WinMenuItem uI查询用户MenuItem = this。UI系统主窗口Window.UIMenuStrip1MenuBar.UI用户管理MenuItem。UI查询用户MenuItem; //操作步骤:Click ’用户管理’ -〉 '查询用户’ menu item Mouse.Click(uI查询用户MenuItem, new Point(1, 1)); //检查点:检查查询用户子窗口是否弹出 Assert。IsTrue(this。UI查询用户Window。WaitForControlExist(6000), "点击查询用户,检测查询用户子窗口弹出失败”); }   实现步骤2 步骤序号 操作步骤 检查点 2 用户名为空,用户类型为“所有",不勾选时间,点击查询,记录查询出的用户行数,程序默认选中第一行,这时我们选中第二行 检测“用户备注”一列的值是否和下方的“用户备注”文本框的值一致   这一步需要注意的就是,首先这里有一个选行的操作,然后需要从表里单元格当中取值,最后与文本框的值进行比对,这里之所以需要记录这个RowCount,是因为在步骤7的时候会用于比对,这里需要用准星首先捕获到这个GridViewTable,然后将其添加到对象库:   然后才开始录制并编写代码,如下: public int AllUser;//注意,这里留一个字段来保存行数 public void Step2_SearchWithOutCondition() { WinButton uI查询Button = this.UI查询用户Window.UI查询Window.UI查询Button; //操作步骤 Mouse.Click(uI查询Button, new Point(1, 1));//Click ’查询’ button System。Threading。Thread.Sleep(3000);//等待3秒,应付可能出现的查询延时 AllUser = this。UI查询用户Window。UIUserGridViewWindow。UIDataGridViewTable。Rows.Count;//获取行数 WinRow row2 = this。UI查询用户Window。UIUserGridViewWindow。UIDataGridViewTable。Rows[1] as WinRow; Mouse。Click(row2.Cells[0], new Point(10, 10));//点击第二行第一个单元格,用以将第二行其选中 System.Threading。Thread。Sleep(1000);//等待1秒,应付可能出现的查询延时 //检查点:检测“用户备注”一列的值是否和下方的“用户备注”文本框的值一致 Assert。AreEqual(this.UI 查询用户Window.UITbx_MemoWindow.UITbx_MemoEdit.Text, ((WinCell)row2。Cells[4]).Value,"检测“用户备注"一列的值是否和下方的“用户备注"文本框的值一致失败"); }本文为互联网收集,请勿用作商业用途文档为个人收集整理,来源于网络   实现步骤3 步骤序号 操作步骤 检查点 3 用户名为刚才我们在添加用户窗口添加的用户,其他条件不变,点击查询(例如,在上个部分的示例中,我们使用的是”TestUser6") 查询出用户名为TestUser6的一条数据   步骤3和步骤4是对用户名这个维度来进行测试,需要和上一个模块对接,因为在上一个模块添加了一个用户,所以这里需要检查是否能够查询出来,需要确定的就是RowCount=1并且第一行第一列数据为”TestUser6”才算正确,代码如下: public void Step3_SearchWithUidOnly() { string NewUser = "TestUser6”; WinEdit uITbx_UserNameEdit = this.UI查询用户Window.UITbx_UserNameWindow.UITbx_UserNameEdit; WinButton uI查询Button = this。UI查询用户Window。UI查询Window.UI查询Button; //操作步骤 uITbx_UserNameEdit.Text = NewUser; Mouse.Click(uI查询Button, new Point(1, 1));//Click ’查询' button System。Threading.Thread.Sleep(3000);//等待3秒,应付可能出现的查询延时 //检查点:查询出用户名为TestUser6的一条数据 bool isValid = 1==this.UI查询用户Window。UIUserGridViewWindow。UIDataGridViewTable。Rows.Count; WinCell cell = ((WinRow)UI查询用户Window.UIUserGridViewWindow。UIDataGridViewTable.Rows[0])。Cells[1] as WinCell; isValid &= cell。Value == NewUser; Assert。IsTrue(isValid, ”查询出用户名为”+NewUser+”的一条数据失败"); }文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络   实现步骤4 步骤序号 操作步骤 检查点 4 用户名为一个不存在的用户“testuser100”,其他条件不变,点击查询 未查询出数据   这是一个反例的测试,很明显只要RowCount为0就可以通过测试: public void Step4_SearchWithUidNotExist() { string ErrorUser=”TestUser1000”; WinEdit uITbx_UserNameEdit = this。UI查询用户Window.UITbx_UserNameWindow。UITbx_UserNameEdit; WinButton uI查询Button = this。UI查询用户Window。UI查询Window。UI查询Button; //操作步骤 uITbx_UserNameEdit.Text = ErrorUser; Mouse。Click(uI查询Button, new Point(1, 1));//Click '查询' button System.Threading。Thread.Sleep(3000);//等待3秒,应付可能出现的查询延时 //检查点:未查询出数据 Assert。IsTrue(0 == this.UI查询用户Window。UIUserGridViewWindow.UIDataGridViewTable.Rows.Count, "未查询出数据失败"); }本文为互联网收集,请勿用作商业用途文档为个人收集整理,来源于网络   实现步骤5 步骤序号 操作步骤 检查点 5 将用户名设置为空,其他条件不变,用户类型为“管理员",记录查询出的行数 查询出所有为“管理员"的用户(注,为了方便,这里没有使用从数据库比对,而只使用查询条件与查询出的数据比对,实际项目中可能使用数据库比对)   步骤5,6,7是对用户类型这个维度来进行测试,在步骤5中,我们需要遍历每一行中的“用户类型”列,判断他是不是等于“管理员",并记录一共查询出多少条数据: public int AdminUser;//注意,这里留一个字段来保存管理员用户的行数 public void Step5_SearchWithAdminOnly() { string UserType = "管理员”; WinEdit uITbx_UserNameEdit = this.UI查询用户Window。UITbx_UserNameWindow.UITbx_UserNameEdit; WinComboBox uI用户类型ComboBox = this.UI查询用户Window.UICbx_UserTypeWindow.UI用户类型ComboBox; WinButton uI查询Button = this。UI查询用户Window.UI查询Window.UI查询Button; //操作步骤 uITbx_UserNameEdit。Text = ”"; uI用户类型ComboBox.SelectedItem = UserType; Mouse。Click(uI查询Button, new Point(1, 1));//Click '查询' button System.Threading。Thread.Sleep(3000);//等待3秒,应付可能出现的查询延时 AdminUser = this.UI查询用户Window.UIUserGridViewWindow。UIDataGridViewTable.Rows.Count;//获取行数 //检查点:查询出所有为“管理员”的用户 bool isValid = true; foreach (WinRow winrow in this.UI查询用户Window。UIUserGridViewWindow。UIDataGridViewTable.Rows) { isValid &= ((winrow.Cells[2] as WinCell)。Value == UserType); } Assert。IsTrue(isValid, ”查询出所有为“管理员"的用户失败”); }个人收集整理,勿做商业用途本文为互联网收集,请勿用作商业用途   实现步骤6 步骤序号 操作步骤 检查点 6 将用户类型设置为“一般用户”,其他条件不变,记录查询出的行数 查询出所有为“一般用户”的用户   和步骤5是一样的,需要遍历每一行中的“用户类型”列,判断他是不是等于“一般用户",并记录一共查询出多少条数据: public int NormalUser;//注意,这里留一个字段来保存一般用户的行数 public void Step6_SearchWithNormalUserOnly() { string UserType = ”一般用户”; WinEdit uITbx_UserNameEdit = this。UI查询用户Window。UITbx_UserNameWindow.UITbx_UserNameEdit; WinComboBox uI用户类型ComboBox = this。UI查询用户Window。UICbx_UserTypeWindow。UI用户类型ComboBox; WinButton uI查询Button = this.UI查询用户Window.UI查询Window.UI查询Button; //操作步骤 uITbx_UserNameEdit。Text = ””; uI用户类型ComboBox.SelectedItem = UserType; Mouse。Click(uI查询Button, new Point(1, 1));//Click ’查询' button System.Threading.Thread。Sleep(3000);//等待3秒,应付可能出现的查询延时 NormalUser = this。UI查询用户Window。UIUserGridViewWindow.UIDataGridViewTable.Rows。Count;//获取行数 //检查点:查询出所有为“一般用户”的用户 bool isValid = true; foreach (WinRow winrow in this.UI查询用户Window。UIUserGridViewWindow。UIDataGridViewTable。Rows) { isValid &= ((winrow.Cells[2] as WinCell).Value == UserType); } Assert。IsTrue(isValid, "查询出所有为“一般用户”的用户失败”); }文档为个人收集整理,来源于网络个人收集整理,勿做商业用途   实现步骤7 步骤序号 操作步骤 检查点 7 使用刚才用户类型分别为“所有”,“管理员”,“一般用户”查询出的数据行数,进行比对 一般用户行数+管理员用户行数=所有用户行数   现在应该了解之所以需要记录下不同用户类型记录数的原因了吧?代码如下: public void Step7_ValidUserCount() { Assert。AreEqual(AdminUser + NormalUser, AllUser, ”检查'一般用户行数+管理员用户行数=所有用户行数'失败”); }   实现步骤8 步骤序号 操作步骤 检查点 8 用户名为空,用户类型为“所有",勾选时间,并进行选择“2008—1-11” 查询出所有添加时间为“2008—1—11”的用户   步骤8是对时间维度进行一个测试,现在如果我们选择了2008-1-11,那么只需要遍历查询出的各行的“时间"一列是不是为2008-1-11: public void Step8_SearchWithDateOnly() { string DateTimeAsString = ”2008—1-11"; WinEdit uITbx_UserNameEdit = this.UI查询用户Window。UITbx_UserNameWindow。UITbx_UserNameEdit; WinComboBox uI用户类型ComboBox = this。UI查询用户Window。UICbx_UserTypeWindow.UI用户类型ComboBox; WinCheckBox uI日期CheckBox = this.UI查询用户Window.UI日期Window.UI日期CheckBox; WinDateTimePicker uIDtp_AddTimeDateTimePicker = this。UI 查询用户Window.UIDtp_AddTimeWindow.UIDtp_AddTimeDateTimePicker; WinButton uI查询Button = this。UI查询用户Window。UI查询Window.UI查询Button; //操作步骤 uITbx_UserNameEdit。Text = "”; uI用户类型ComboBox。SelectedItem = "所有"; uI日期CheckBox。Checked = true; uIDtp_AddTimeDateTimePicker.DateTimeAsString =DateTimeAsString; Mouse.Click(uI查询Button, new Point(1, 1));//Click ’查询’ button System.Threading。Thread。Sleep(3000);//等待3秒,应付可能出现的查询延时 //检查点:查询出所有为“2008-1—11"的用户 bool isValid = true; foreach (WinRow winrow in this。UI查询用户Window。UIUserGridViewWindow。UIDataGridViewTable。Rows) { string[] DateNumbers = DateTimeAsString.Split('-'); DateTime dt= Convert。ToDateTime((winrow。Cells[3] as WinCell)。Value); isValid &= Convert.ToInt32(DateNumbers[0]) == dt.Year; isValid &= Convert。ToInt32(DateNumbers[1]) == dt。Month; isValid &= Convert。ToInt32(DateNumbers[2]) == dt.Day; } Assert.IsTrue(isValid, ”查询出所有为“2008—1—11”的用户失败”); }文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络   实现步骤9 步骤序号 操作步骤 检查点 9 将条件设置为刚才我们在添加用户窗口添加的用户信息(使用我们在上一个示例中使用的值,如”TestUser6",”一般用户”,时间为添加时间,时间这个需要用到某个变量来记录) 查询出对应的一条数据   步骤9是进行一次复合条件查询的测试,这次测试就用到之前我们在添加用户的时候的数据,需要注意的是,因为添加时间是不确定的,所以我们需要修改之前录制的代码,将他的值赋给一个变量,需要修改的AddUserUiMap。cs中的方法Step6_AddUserSuccess,让其有一个返回值返回当前时间,代码如下: public DateTime Step6_AddUserSuccess() { //操作步骤 this.UI添加用户Window。UITbx_UserNameWindow.UITbx_UserNameEdit。Text = ”TestUser6"; this。UI添加用户Window.UICbx_UserTypeWindow.UI用户类别ComboBox。SelectedItem = ”一般用户"; this。UI添加用户Window。UITbx_MemoWindow。UITbx_MemoEdit。Text = ”Test"; Mouse。Click(this.UI添加用户Window.UI添加Window.UI添加Button, new Point(1, 1)); //检查点:首先检查3秒内是否有弹出框弹出,如果有,则检查文本是否是"添加成功!” this。mUI弹出框Window = new UI弹出框Window(); bool isPopUp = this.UI弹出框Window.UI弹出框Text.WaitForControlExist(3000); Assert.IsTrue(isPopUp&&this.UI弹出框Window.UI弹出框Text。DisplayText == ”添加成功!”, ”输入正确,检测弹出“添加成功!”失败”); Mouse.Click(this.UIOKWindow。UIOKButton, new Point(1, 1)); //这里是新添加的代码 return DateTime。Now; }个人收集整理,勿做商业用途本文为互联网收集,请勿用作商业用途   然后现在在这里引用之前的变量,来进行操作,代码如下: public void Step9_SearchWithAllCondition(DateTime addTime) { string UserName = "TestUser6”; string UserType = ”一般用户”; string AddTime = addTime.Year + ”-” + addTime。Month + ”-” + addTime.Day; WinEdit uITbx_UserNameEdit = this。UI查询用户Window.UITbx_UserNameWindow.UITbx_UserNameEdit; WinComboBox uI用户类型ComboBox = this。UI查询用户Window.UICbx_UserTypeWindow。UI用户类型ComboBox; WinCheckBox uI日期CheckBox = this.UI查询用户Window。UI日期Window。UI日期CheckBox; WinDateTimePicker uIDtp_AddTimeDateTimePicker = this。UI 查询用户Window。UIDtp_AddTimeWindow。UIDtp_AddTimeDateTimePicker; WinButton uI查询Button = this。UI查询用户Window.UI查询Window。UI查询Button; //操作步骤 uITbx_UserNameEdit。Text = UserName; uI用户类型ComboBox.SelectedItem = UserType; uI日期CheckBox。Checked = true; uIDtp_AddTimeDateTimePicker。DateTimeAsString = AddTime; Mouse。Click(uI查询Button, new Point(1, 1));//Click ’查询’ button System。Threading.Thread.Sleep(3000);//等待3秒,应付可能出现的查询延时 //检查点:查询出用户名为TestUser6的一条数据 bool isValid = 1 == this.UI查询用户Window。UIUserGridViewWindow.UIDataGridViewTable。Rows.Count; WinCell cell = ((WinRow)UI查询用户Window.UIUserGridViewWindow.UIDataGridViewTable.Rows[0]).Cells[1] as WinCell; isValid &= cell。Value == UserName; Assert.IsTrue(isValid, ”查询出用户名为" + UserName + ”的一条数据失败”); }个人收集整理,勿做商业用途本文为互联网收集,请勿用作商业用途   实现步骤10 步骤序号 操作步骤 检查点 10 点击重置按钮 用户名为空,用户类型为“所有”,不勾选时间   这一步很简单,几乎没什么说的,只是需要注意的是最好加个等待时间,代码如下: public void Step10_ClickReset() { WinEdit uITbx_UserNameEdit = this.UI查询用户Window。UITbx_UserNameWindow。UITbx_UserNameEdit; WinComboBox uI用户类型ComboBox = this.UI查询用户Window。UICbx_UserTypeWindow.UI用户类型ComboBox; WinCheckBox uI日期CheckBox = this.UI查询用户Window。UI日期Window.UI日期CheckBox; WinButton uI重置Button = this.UI查询用户Window。UI重置Window。UI重置Button; //操作步骤 Mouse。Click(uI重置Button, new Point(25, 14)); System。Threading。Thread.Sleep(1000);//等待1秒,应付可能出现的查询延时 //检查点:用户名为空,用户类型为“所有”,不勾选时间 bool isValid = true; isValid &= string.IsNullOrEmpty(uITbx_UserNameEdit.Text); isValid &= uI用户类型ComboBox.SelectedItem == "所有”; isValid &= !uI日期CheckBox.Checked; Assert.IsTrue(isValid, ”重置失败”); }文档为个人收集整理,来源于网络本文为互联网收集,请勿用作商业用途   实现步骤11 步骤序号 操作步骤 检查点 11 点击退出 退出窗口   这一步也很简单,和上个部分提到的一样,代码如下: public void Step11_CloseWindow() { Mouse.Click(this.UI查询用户Window.UI查询用户TitleBar.UICloseButton, new Point(1, 1)); Mouse.Click(this。UI系统主窗口Window.UI系统主窗口TitleBar.UICloseButton, new Point(1, 1)); Assert。IsTrue(this.UI系统主窗口Window。WaitForControlNotExist(3000), ”退出失败"); }   总结   在本章,介绍了通过编码的方式来建立UI测试,,相信大家在看完了以后,应该能够完全自己用VS2010提供的UI测试进行实际项目测试了。如果需要调用刚才所写的方法,只需要再新建一个编码的UI测试,例如将其命名为CodedUITest1.cs,然后在内部添加一个这样的调用即可: [TestMethod] public void CodedUITestMethod1() { DateTime addTime; AddUserUIMapClasses.AddUserUIMap addUserUIMap = new AddUserUIMapClasses.AddUserUIMap(); addUserUIMap.Step1_LoginSystem(); addUserUIMap.Step2_ClickAddUser(); addUserUIMap.Step3_AddUserWithNoName(); addUserUIMap.Step4_AddUserWithOverlapName(); addUserUIMap。Step5_AddUserWithNoMemo(); addTime = addUserUIMap。Step6_AddUserSuccess();//这里要特别注意,有一个返回值 addUserUIMap.Step7_CloseWindows(); SearchUserUIMapClasses。SearchUserUIMap searchUserUIMap = new SearchUserUIMapClasses.SearchUserUIMap(); searchUserUIMap.Step1_ClickSearchUser(); searchUserUIMap.Step2_SearchWithOutCondition(); searchUserUIMap。Step3_SearchWithUidOnly(); searchUserUIMap。Step4_SearchWit
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:VS-测试功能之旅:编码的UI测试通过编写测试代码的方式建立UI测试.doc
    链接地址:https://www.zixin.com.cn/doc/2626796.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork