如何进行一个Web项目的UI自动化测试,首先需要建立一个自动化测试团队。理想情况下,该团队由四个人组成,即测试和开发工程师、中高级自动化测试工程师和两名初级自动化工程师。在非理想情况下,可能只需要一个人。
(1)测试开发:
基础答案:自动化框架的构建,确定自动化框架的设计模式,第三方代码工具的封装,中间公共模块的设计和调用,测试用例和测试套件的管理和执行,测试报告和测试结果的输出(文件输出和邮件通知)。
可选高级:如果可能的话,需要搭建持续集成服务器(CI,ContinuousIntegrationServer)的环境,一个用于持续交付和自动化的冒烟测试等。
基本要求:实施自动化解决方案的经验、开发背景和持续集成背景等。
(2)中高级自动化测试工程师:
配合测试开发人员实施测试框架的构建。主要负责中间公共模块的实现和实例化,以及一些疑难复杂的自动化用例脚本的编写和调试。
基本要求:有参与过自动化方案的建设、脚本编写经验丰富、会代码调试、懂Web测试等。
(3)初级自动化测试工程师:
根据中间公共模块的设计,实例化公共模块和方法组合,实现用例脚本的自动编写。
基本要求:有计算机编程思维、有代码经验、可以读懂脚本和HTML等
(4)若只有一个人:
首先,可以实现自动化用例的维护和执行。在此基础上,不断提取和实现公共模块的设计和测试报告的生成。通过经验的积累和后续人员的补充,要尽快做好自动化框架的建设。
技术选择:
SeleniumWebDriver、Python(unittest)Java(JUnit)、CIServer
技术方案:
选择Python+Selenium的技术方案。
首先,技术工具是免费的,Python的工具是PyCharm社区版,Selenium的WebDriver是开源工具。使用简洁的Python语言进行自动化测试更加实用,在学习成本、学习时间和优势方面都有优势。
另外Python自带的unittest单元测试框架可以很方便的实现自动化用例的设计和执行以及自动化用例套件的管理等任务。Python是纯面向对象的语言,后续也可以过渡到Java+Selenium进行更加丰富的自动化测试。
此外,可以选择Jenkins作为持续集成服务器,配合Python+Selenium的方案进行自动化冒烟测试。
适合自动化的项目模块:
1、任务测试明确,不会频繁变动
2、每日构建后的测试验证
3、比较频繁地回归测试
4、软件系统界面稳定,变动少
5、需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重复任务
6、软件维护周期长
7、项目进度压力不太大
8、被测软件系统开发比较规范,能够保证系统的可测试性
9、具备大量的自动化测试平台
10、测试人员具备较强的编程能力
硬件:
硬件的要求不高,主要需要独立的测试环境。另外测试人员用的电脑最好是Windows桌面操作系统,需要安装Firefox浏览器,避免47.0的最新版本。测试人员最好也使用Chrome浏览器辅助进行Web元素的定位。
01
Selenium学习总结
SeleniumIDE(火狐的插件)
录制局部脚本
修改编辑脚本(插入命令、注释)
3导出脚本(支持C#、Java、Python、Ruby)
单元测试框架
C#:NUnit
Java:JUnit
TestNG
Python:unittest
Ruby:test-unit
02
学习研究WebDriver
Python+SeleniumWebDriver
01
搭建环境步骤
安装python3.x(windowsxp不支持python3.5+)
设置环境变量path(安装的时候也可以解决勾上addpython.exttopath)
安装Selenium用pip命令安装pipinstall-Uselenium
有无问题?
路径,pip可能定位不到,pip也可能定位到别的文件夹(perl)
方案:cdc:\python34\scripts
外网ip问题交换机的原因,局域网里面是同一个ip,造成安装超时
火狐的版本46.0以及以下
windows7x64以上的系统,需要用管理员模式运行cmd,否则会安装失败
02
普通的使用
定位方式
byid,name,class_name,tag_name,css_selector,xpath,link_text,partial_link_text
主要用的是:
id,name,css_selector,xpath,link_text
鼠标的操作
定位的问题:有无问题?
aframe
f1=find_element_by_css_selector(frame)switch_to.frame(f1)bselects1=find_element_by_css_selector(select)ss1=Select(s1)ss1.select_by_index(0)ss1.select_by_value("人事部")c编码问题utf-8d时间等待问题sleep(5)单元测试框架:unittest
解决了什么问题?
unittest.TestCase
前置条件清理测试过程步骤断言assertEqual(期望值,实际结果,错误提示)运行测试test_开头的方法unittest.TestSuiteaddTest(xxx("test_batch_login"))自定义的添加测试用例,并执行unittest.TextTestRunnerrun(suite)执行创建并维护好的测试套件test_runnertest_suitetest_case测试运行器测试套件测试用例模块化操作
面向对象的实践:
编写一个类,类里面描述公共的方法
实例化这个类,调用这个类的方法
有无问题?
类的构造方法,需要传递webdriver.Firefox()self.