零基础测试开发考核体系:
Python知识:
1、字典排序使用到的函数具体是哪个?举例说明
sorted()
2、字符串格式化使用到的关键字是哪个,举例说明
format
3、列表中append()与insert()的区别是什么?举例说明
append():添加字符串到索引最后一位
insert():可指定位置
4、列表与元组的区别是什么
元组是不可变的:不能增加,也不能把原有的删除
列表是可变的:可以增加,也可以把原有的删除
5、查看一个对象的类型关键字是什么?查看对象的内存地址关键字是什么
type()
id()
6、怎么获取字符串的索引信息
str='abc!' for index,item in enumerate(str): print(index,item)
7、举例说明列表推导式的使用
list3=[xfor xin range(5)] print(list3)
8、当元组只有一个对象的时候,需要注意什么?
最后加,
9、怎么理解函数的返回值?
(1)在一个函数里,没有关键字return时,返回值是None
(2)在一个函数里,有关键字return时,它的返回值就是return后面的值
(3)函数的返回值可以是函数形式
10、怎么理解函数的动态参数
在函数参数、类型不确定的时候使用动态参数
11、字符串与列表之间的互相转换
字符串→列表:.split(" ")
列表→字符串:" ".join()
12、字符串的替换使用到的方法是?
replace()
13、怎么理解is,in,==
in:判断的是两个对象中一个对象是否包含另外一个对象
is:判断的是两个对象的内存地址
==:比较两个对象的内容以及类型是否一致
UI自动化测试:
1、常用的元素定位有那几种方法,请举例说明
(1)ID="id"
(2)XPATH="xpath"
(3)LINK_TEXT="link text"
(4)PARTIAL_LINK_TEXT="partial link text"
(5)NAME="name"
(6)TAG_NAME="tag name"
(7)CLASS_NAME="class name"
(8)CSS_SELECTOR="css selector"
2、单个元素定位与多个元素定位的区别是什么?
单个元素定位:find_element
多个元素定位:find_elements
单个元素定位和多个元素定位的区别就是,单个元素定位返回是单个元素,多个元素定位返回的是包含多个元素的一个列表。
3、如果是iFrame的框架,如何来定位里面的元素属性的对象
或者id定位:
driver.switch_to.frame('login_frame')
使用索引:
driver.switch_to.frame(0)
4、怎么理解页面对象设计模式
在 UI 自动化测试中对页面元素的处理引入面向对象思想。从测试用例中剥离页面元素操作,并以页面为单位的类将页面元素上的定位方式及操作进行封装。
5、怎么理解显式等待和隐式等待
显示等待:显式等待指定某个条件,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常了。
隐式等待:等待时间完成即可(单位:秒)默认等待时间为0
6、在测试中遇到多窗口,具体怎么解决,请描述具体的步骤和编写具体的案例代码
1、循环所有的窗口
2、判断是否是当前窗口
3、如果不是,切换到新的窗口
4、在新的窗口进行操作
5、关闭新的窗口
6、切换到最开始窗口
'''注册网易邮箱超链接''' driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.163.com/') oldwindow=driver.current_window_handle driver.find_element_by_xpath('//*[@id="normalLoginTab"]/div[1]/div[2]/a[1]').click() t.sleep(3) allwindow=driver.window_handles for window in allwindow: if oldwindow!=window: driver.switch_to.window(window) t.sleep(3) driver.find_element_by_class_name('j-register').click() t.sleep(3) dtest=driver.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div[2]/div[1]/div[2]') assert dtest.text=='邮箱地址不能为空' driver.switch_to.window(oldwindow) t.sleep(2) driver.quit()
测试基础理论:
1、bug完整的生命周期
发现BUG-->提交BUG-->指派BUG-->研发确认BUG-->研发去修复BUG-->回归验证BUG-->是否通过验证-->关闭BUG
2、编写测试用例的要素是什么?
3、怎么理解黑合测试,白盒测试
黑盒测试:功能测试
4、测试按阶段划分,主要分为那几个阶段
5、怎么理解等价类和边界值
等价类是对输入数据 进行测试,分有效等价类和无效等价类 ,
如:年龄分数在0-100之间,有效等价类就是0-100之间的数字
无效等价类 就是,小于0,大于100的数字,
边界值是对等价类的补充
6、请描述一个完整的测试流程
单元测试框架:
1、unittest与pytest的框架
2、unittest的常用组件有哪些
TestCase:测试用例,测试用例里面会有很多测试方法,是单元测试中最小维度的测试行为。
TestSuite:测试套件,是测试用例的集合。
TestFixure:测试固件,测试准备工作和收尾工作,打开和关闭浏览器,链接和关闭数据库,可有可无
TestRunner:测试运行器,运行测试用例。
TestReport:将测试结果呈现给用户,生成测试报告。
3、unittest中怎么理解测试固件
setUp() 方法用于初始化测试固件;而 tearDown() 方法用于销毁测试固件
setUp() :最开始执行
tearDown():最后执行
4、怎么理解setUp(),tearDown()与类测试固件的测试
局别:
setUp(),tearDown()每次都要执行
类测试固件只执行一次
5、在unittest测试框架中,加载所有的测试模块使用到的方法是什么?具体参数是什么?
用到的方法:discover
具体参数:
路径参数,测试文件名
6、在unittest中使用那个库来生成对应的测试报告
HTMLTestRunner
7、一个完整的测试用例包含哪些步骤
拿到测试需求 -> 分析需求(画思维导图) -> 编写⽤例 -> 划分⽤例优先级
8、怎么理解参数化
解决的问题:
测试进行相同的步骤,只是输入的数据不同,其他操作都是一样的,这样需要写很多测试用例,参数化可以解决这种问题,让代码更加简洁。
9、一个完整的自动化测试用例包含哪些?
(1)测试准备
(2)测试用例
(3)测试收尾
10、测试用例之间可以依赖吗?
不可以,测试用例是单独的