3.5.1、说说你们是怎么做自动化测试的☆☆☆☆☆
我们的自动化测试主要是web UI的自动化测试,主要用于冒烟测试和主要功能的回归测试或者主流浏览器的兼容性测试,作为手工测试的一种补充,提高测试效率,减少一些重复性的测试工作。
1、自动化测试通常是在UI页面完成和稳定之后开始进行的,依据功能测试用例编写自动化测试用例,主要是加入一些元素的定位说明和验证功能是否完成的操作,然后依据自动化测试用例,使用python语言转化为自动化测试脚本,驱动火狐或者谷歌等浏览器,用Selenium提供的API进行页面元素的定位,并对元素进行操作,比如点击,输入内容,下拉框选择等来模拟手工的操作。
2、我们主要使用python+Selenium+unittest来搭建我们自动化测试框架, 主要使用python调用Selenium提供API编写脚本来驱动浏览器执行指定的操作,unittest主要是方便管理并执行多个测试用例,获取最终的测试结果报告。
3、脚本编写调试完成之后,我们在每次开发提交测试版本后用它来进行冒烟测试,也会用它来做主要功能的回归测试。
4、当时的项目自动化测试还处于起步阶段,后续为了更方便的维护会对自动化的脚本进行重构和封装,会采用PO(PageObject)设计模式,对脚本进行分层,也会与持续集成工具Jenkins相结合来自动执行脚本,并生成报告,将测试结果通过邮件的方式发送给相关的人员。
3.5.2、你们为什么要做自动化?☆☆☆☆☆
自动化测试可以提高测试效率,可以减少回归测试中重复的工作,可以比较精准的获得测试结果(脚本的执行不依赖于人的主观情绪)
3.5.3、在项目中你们用自动化来做些什么☆☆☆☆☆
我们主要用自动化测试来进行版本提交时候的冒烟测试和功能回归测试,以正向功能为主,用来检验我们的软件对需求的符合度,或者用脚本来启动不同的浏览器测试系统的兼容性。
如果时间允许,我们也会编写脚本来测试反向功能,发现问题提交缺陷。
3.5.4、Selenium的定位方式都有哪些,你常用的是哪些?☆☆☆☆☆
Selenium的八种定位方式:ID,name,className,LinkText,partialLinkText,xpath,CSS,tagName
我们经常用的有ID,name,className,xpath等
我们选择定位方式的原则是,哪种简单,能够准确定位就会选择哪一种。
Xpath我们用的也比较多,因为这种定位方式定位比较准确,特别对于一些元素没有ID,name等属性的时候,但我们也不会全都选择xpath方式,因为这种方式可读性比较差,如果路径比较深,执行效率会低一些。
3.5.5、SeleniumWebdriver的工作原理☆☆☆☆☆
我们使用python调用seleniumAPI来编写脚本,运行脚本后,通过浏览器的驱动启动浏览器并绑定端口,运行脚本向浏览器发送请求,浏览器接收到请求后进行解析并执行,执行后将执行结果反馈给我们的客户端,客户端再决定是否继续执行。
3.5.6、你在自动化测试过程中遇到的问题☆☆☆☆☆
经常遇到的是元素定位不到的问题,因为网络慢,电脑性能差,元素没有加载出来,这种情况我们一般是这么处理的,更换定位方式或者增加等待时间,如果脚本代码没有错误的情况下,增加等待时间一般都能解决。
还会遇到浏览器不能正常启动的问题,这个问题的原因一般是实例化浏览器不正确或者是浏览器的驱动和浏览器的版本不匹配。
其他根据自己学习过程中遇到的问题来回答。
3.5.7、如何定位动态元素?如何定位隐藏元素?☆☆☆☆☆
有些元素的属性是动态的,每次加载页面都会生成新的属性信息。
如果是动态元素,我们一般会选择xpath或者css的方式来定位。
如果隐藏的元素,我们使用Selenium提供的API来执行一段js代码,将隐藏的元素属性暂时修改为显示状态,然后再进行定位和操作。
3.5.8、自动化测试用例是怎么来的☆☆☆☆☆
我们的自动化测试用例是从功能测试当中抽取来的,一般会抽取冒烟测试的用例,正向功能流程的用例来作为自动化测试用例,然后转化为脚本,主要用于冒烟测试和回归测试使用。
3.5.9、你们的自动化框架是如何搭建的☆☆☆
我们使用开源的Selenium工具,unittest单元测试框架管理case,生成测试报告,持续集成工具用的jenkins。
我们使用的Python+Selenium+Unittest+Jenkins
Unittest主要用来管理测试用例的执行,生成测试报告等
Jenkins用来进行持续集成测试管理,生成测试报告,自动发送邮件给相关人员。
3.5.10、如何判断你的自动化测试用例是否通过☆☆☆☆☆
我们会使用unittest断言的方式来进行结果判断
设计自动化测试用例的时候我们有预期结果,我们可以根据我们预期结果来进行用例是否通过的判断。
比如我们进行登录的自动化测试,执行登录的操作后,进入系统我们获取登录成功后界面上会显示的文本信息,用代码来判断获取的信息是否和我们预期的信息一致。
3.5.11、为什么要使用unittest☆☆☆☆
a、帮我们来组织和管理测试用例。
u b、通过框架提供的断言来判断我们的用例是否执行通过。
u c、可以通过套件等方式来执行测试用例
u d、支持数据驱动测试
u e、可以帮我们来输出html格式的测试报告
3.5.12、自动化测试的流程是什么☆☆☆☆☆
我们通过功能测试需求,编写功能测试用例,在功能测试用例提取冒烟测试和正向流程的测试用例来作为自动化测试用例,然后我们使用开源的web自动化测试工具Selenium,用python语言编写脚本,执行测试用例,输出报告,有问题会及时的提交开发人员解决。