1、功能测试
根据测试用例模板,使用黑盒测试方法针对下列网站的注册、登录功能设计测试用例,通过执行测试用例发现系统存在的缺陷,并填写到缺陷报告中。
测试网址链接(千千音乐网站):https://music.91q.com/
(1)测试用例如下:
(2)缺陷报告如下:
2、自动化测试(Selenium)
测试网站:https://www.qyer.com/
测试脚本如下述代码(qyTest.py):
import time
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
# 创建WebDriver对象
# wd = webdriver.Edge()
wd = webdriver.Firefox()
wd.implicitly_wait(20) #设置隐式等待时间
# 1、打开测试网址首页,并最大化窗口
wd.get('https://www.qyer.com/')
wd.maximize_window()
# 2、通过link text定位,点击“锦囊”
element = wd.find_element(By.LINK_TEXT, '锦囊')
element.click()
# 3、通过link text定位,点击“社区”
element = wd.find_element(By.LINK_TEXT, '社区')
element.click()
# 4、通过link text定位,点击“行程助手”
element = wd.find_element(By.LINK_TEXT, '行程助手')
element.click()
# 5、通过link text定位,点击“商城”
element = wd.find_element(By.LINK_TEXT, '商城')
element.click()
# 6、通过link text定位,点击“酒店·民宿”
element = wd.find_element(By.LINK_TEXT, '酒店·民宿')
element.click()
# 7、通过link text定位,点击“特价酒店”
element = wd.find_element(By.LINK_TEXT, '特价酒店')
element.click()
# 8、点击目的地,输入“广州”,点击搜索
# (1)通过css selector定位到含有placeholder属性的input标签,因为定位到的是一个列表所以用到了for循环
element = wd.find_elements(By.CSS_SELECTOR, 'input[placeholder]')
for element_list in element:
# 使用Selenium提供的send_keys()方法模拟按键输入,Keys.CONTROL表示“Ctrl”;Keys.DELETE表示“Delete”
element[0].send_keys(Keys.CONTROL + 'a')
element[0].send_keys(Keys.DELETE)
element[0].send_keys('广州')
# (2)通过class定位到搜索按钮,并点击
but_element =wd.find_element(By.CLASS_NAME, '_1NvUtOVR8BL55WjVD2JkAi')
but_element.click()
# 测试结束,强制等待3秒后关闭页面
time.sleep(5)
wd.quit()
3、单元测试(UnitTest)
被测代码(Calculate.py):
def add( a, b):
return a + b
def sub( a, b):
return a - b
def mcl( a, b):
return a * b
def div( a, b):
if(b == 0):
return "分母不能为0"
else:
return a / b
测试脚本(CalculateTest.py):
import unittest
from Calculate import add,sub,mcl,div
from ddt import ddt,data,unpack
@ddt
class calculateTestCase(unittest.TestCase):
@data([1,0,1],[-1,0,-1],[-1,1,0])
@unpack
def test_add(self, a, b, expect_value):
result = add(a, b)
self.assertEqual(result,expect_value,msg=result)
@data([1,0,1],[-1,0,-1],[-1,1,-2])
@unpack
def test_sub(self, a, b, expect_value):
result = sub(a, b)
self.assertEqual(result,expect_value,msg=result)
@data([1,0,0],[-1,0,0],[-1,1,-1])
@unpack
def test_mcl(self, a, b, expect_value):
result = mcl(a, b)
self.assertEqual(result,expect_value,msg=result)
@data([0,1,0],[0,-1,0],[-1,1,-1],[1,0,'分母不能为0'])
@unpack
def test_div(self, a, b, expect_value):
result = div(a, b)
self.assertEqual(result,expect_value,msg=result)
if __name__ == '__main__':
unittest.main(verbosity=2)
测试结果:
4、性能测试(JMeter)
测试链接(宜家商城):https://www.ikea.cn/cn/zh/cat/shu-guihe-zhi-wu-jia-st002
(1)创建线程组
(2)添加HTTP采样
(3)配置CSV文件
(4)创建结果集并运行线程组
注意:测试线程数先修改为10。因为在使用 jmeter 自带的 run 功能时,不要使用超过 30 的线程数运行脚本,否则可能会造成端口被封。
运行结果如下图:
(5)命令行运行测试脚本
设置线程数为50;
进入JMeter的bin目录下打开命令提示符输入以下命令:
jmeter -n -t E:\jmeter\Demo\yijia\宜家.jmx -l E:\jmeter\Demo\yijia\report.jtl
其中前面的路径是线程的存放路径,后面的是生成结果集的路径文件。
- -n:以非GUI模式运行JMeter
- -t:指定运行测试计划
- -l:指定保存的jtl文件的路径和名称
运行结果:
生成的report.jtl文件如下(部分截图):