凡事预则立随笔作业
凡事预则立随笔作业
1. 项目的GITHUB地址
https://github.com/orgs/gaolaoshiyoudiankeai
2.针对之前提到的问题进行思考和总结
- 在近期的工作实践中我们遇到了一些问题。比如云函数的调用和页面数据交互。小程序的云开发能力,主要依赖了node.js(运行在服务器上的js),可以让我们在没有服务器的情况下,使用云开发的数据库,编写云函数(相当于接口)来完成一整套小程序的开发。对于这个我们都不是很熟悉,于是在网上查找了许多案例和使用方法,最后将其应用到我们的小程序中。
- 这周我们的主要任务是完善小程序的功能,在原有的可以完成基础预约功能的基础上增加审核、签到、黑名单功能。这些功能如何实现、在哪些界面实现比较合适,都需要我们进一步思考。同时,本周我们进行了部分前端界面的优化,试图做自定义导航栏,也遇到了一些问题,查找了网络上许多例子后完成了自定义导航栏的设计。
- github的issue不够是由于没有完整的进行上传和整理,小组成员由于开发条件的便利程度对于在GitHub上上传issue没有足够的重视,在项目完整结束后会进行完整的信息上传。
- SCRUM这一部分是由于信息的收集和采纳没有得到及时的汇总,大家对于报告的整理不能及时截图和汇总,由于互相之间的交流都是通过即时交流工具,所以这方面的信息会有部分不完整。
3. 需要改进的团队分工
- 大家的团队意识非常强,小组成员之间分工明确、沟通及时。现在小程序的功能不断完善,界面优化工作也开启了。通过讨论,我们对接下来的完善工作也有了明确的目标,感觉在这个阶段学到了许多有用的知识,也看到了一定的成果。
- 我们小组的整体运行模式没有大的问题,在分工方面也没有任何冲突的地方,大家可以做到人尽其责。针对之前的不足,主要是一些包括代码及需求框架的问题,我们通过小组例会的形式上达到一致。
- 最后,针对Github及分工方面的问题,我们缺少一次完整的汇总和信息的查漏补缺,这将是后期进行完整汇总的重点。
4. 团队的代码规范
1. 命名风格
-
【强制】代码中函数和变量均由驼峰命名法命名。
-
【强制】代码中的函数和变量命名均不能以下划线或符号开始。
-
【强制】代码中避免出现缩写情况,防止出现之后读不懂代码的情况。
2. 代码格式
- 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;
- 【强制】如果是非空代码块则:
-
左大括号前不换行。
-
左大括号后换行。
-
右大括号前换行。
-
右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
-
- 【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。
- 【强制】采用 4 个空格缩进,禁止使用 tab 字符。
3. 注释规约
-
【强制】类、类属性、类方法的注释必须符合 Javadoc 规范,使用/**内容*/格式。
-
【强制】注释的原则是把代码解释清楚,不要求必须为英文。
-
【强制】谨慎注释掉代码。
5. 描述测试工作的安排
测试第一周:
本阶段项目的测试主要由平时开发过程中的单元测试和本开发阶段末期的集成测试组成。
测试第二周:
时间安排上主要在项目的后期才开始对系统进行标准化的测试,平时在编码阶段所进行的一些测试由于缺乏足够的文档支持所以作用有限,但它们还是花费了项目组一定的工作量的。
测试第三周:
测试第三周解决了强两周发现的前端和后端问题。
测试第四周:
接下来的测试安排主要是通过进一步的增多测试案例进行功能集成的进一步测试。
6. 测试工具的选择和使用
测试工具:Selenium
Selenium是为正在蓬勃发展的web应用开发的一套完整的测试系统。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Selenium的核心Selenium Core基于JsUnit,完全由Java编写,因此可运行于任何支持Java的浏览器上,包括IE、Mozilla Firefox、Chrome、Safari等。
selenium的特点:
1、由程序控制浏览器进行操作,而不是手动操作浏览器
2、程序控制浏览器进行操作的时候,速度非常慢,所以要谨慎使用selenium
3、使用selenium控制浏览器的时候,需要下载浏览器对应的驱动程序
4、selenium为开源 免费 但是更新速度没有浏览器快
关于selenium的一些操作:
1. 按键操作
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
time.sleep(3)#代码休眠时间 为了防止网速跟不上代码运行速度 而导致系统不能正常运行
driver.find_element_by_id('kw').send_keys('selenium')#向输入框中发送想要输入的值
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')#ctrl+a 全选输入框内的全部内容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')#ctrl+x 剪切上步全选的内容
2. 时间等待
selenium 由网页驱动驱使浏览器进行操作,速度慢是一大特点,经常会出现代码执行完了,但是网页内容还没有加载完毕。里面的标签还没有显示出来,如果这时候还没有操作里面的标签,代码就会爆出异常。
时间等待有两种方法:WebDriverWait()和time.sleep()
1、都是让程序等待执行的时间
2、time的时间是固定的,但是长短不会随着标签的加载速度而改变。WebDriverWait时间是不固定的,等待多少时间是看标签的加载时间和固定的指定的时间
3、如果在指定的时间内,标签仍然没有加载出来,那么time和WebDriverWait都会爆出异常
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
button = driver.find_element_by_id('su')
#WebDriverWait网页等待
#值1:等待的对象 值2:等待的时间
#WebDriverWait 经常和until 以及until not 一起使用
#lambda 匿名函数 is_displayed 是否已经显示
is_visible = WebDriverWait(driver,5).until(lambda driver:button.is_displayed())
print(is_visible)
button.click()
3. window切换
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
current_window = driver.current_window_handle#获取当前window对象
print(current_window,driver.title)#获取当前window编号和网页标题
driver.find_element_by_name('tj_trnews').click()
news = WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_css_selector('
hdline0 .a3'))
news.click()
#获取所有窗口
all_window = driver.window_handles
for window in all_window:
if window != current_window:
driver.switch_to.window(window)
title = driver.find_element_by_css_selector('.text_title h1')
WebDriverWait(driver,10).until(lambda driver:title.is_displayed())
driver.switch_to.window(current_window)
print(driver.find_element_by_css_selector('#footer span').text)
7. 测试案例
搜索或查询功能:
条件 |
测试步骤 |
测试数据 |
预期结果 |
备注 |
|
单独遍历各查询条件,测试按各查询条件是否都能够查询出相应的值. |
|
查询出符合条件的记录 |
|
|
设置界面上所有查询条件进行查询,单击查询按钮后,测试执行查询操作后,查询条件是否能保留 |
|
能够执行查询,且已输入/选择的查询条件能够保留 |
|
|
随机对各查询条件进行组合查询,测试是否能够实现组合查询 |
各查询条件下存在相应的值 |
能够执行查询 |
|
|
在各字符串类型字段中输入非精确值进行查询,测试是否能够实现糊模查询 |
各查询条件下存在相应的值 |
能够执行查询 |
|
|
测试是否控制了各种非法字符的查询 |
输入@#$%^&*()<p>~'"%-like=?等符号 |
查询不到任何记录 |
|
|
设置条件查询出记录后,翻到最后一页,再更改查询条件,测试各查询条件查询出记录后再切换条件查询是否正确。 |
第一个查询条件查询出来的记录页数必须多于第二个查询条件查询出来的记录页数 |
查询出相应的记录 |
第一次查询条件范围比第二次大,不一定说要存在分页 |
|
设置查询条件,点击查询按钮,测试未查询到任何记录时,是否会给予相应的提示 |
该查询条件下无任何记录 |
提示‘未查到任何记录,请放大查询条件试试!’ |
|
|
设置查询条件,按回车键,测试是否支持回车查询 |
|
执行查询条件 |
可针对特定的场景不一定要实现 |
|
输入各查询条件,前中后包含空格 |
|
前后包含空格去掉空格查询,中间包含空格查不出记录 |
|
|
不输入或输入空格查询 |
|
提示请输入关键字查询 或 默认查询出所有记录 |
|
有日期查询 |
输入查询值,测试存在日期型查询字段时,查询是否正确 |
存在输入范围内的记录. |
能够执行查询 |
|
|
输入查询值,测试当存在开始日期及结束日期进行查询 |
1、开始日期大于结束日期 |
1、给予提示信息。 |
|
|
超日期范围的查询 |
输入1890-01-01或2999-01-01进行查询 |
查询不到任何记录 |
|
|
输入非完整的日期或其它数据,测试对日期型字段查询时,是否对非法数据进行了控制 |
如:2015-08~2015-09-30、205-02-02、2015-7-7、2015-07-或其他数据汉字、字母、特殊字符或随便输入数字 |
进行了格式化输入或给予明确提示 |
|
|
输入不存在的日期进行查询 |
2015-02-30、2015-13-01、2015-07-32 |
给予提示信息 |
|
|
输入不符合项目设定的日期类型,是否会做格式转换 |
如要求格式是2015-07-20,输入的是2015/07/20、2015.07.20等 |
自动转换或者不符合格式要求 |
|
有重置功能 |
输入查询条件后,点重置 |
|
重置后,已输入或已选择的值都恢复为默认值 |
|
|
不输入或输入空格搜索 |
|
提示请输入关键字 |
|
IP地址功能:
测试必填:输入中英文空格或者不输入任何信息 |
|
给予提示信息,不允许提交 |
|
IP地址 前中后含空格 |
|
中间不允许包含空格 |
|
要求是4位,输入小于4位或者大于4位格式 |
137.125.11、137.112.254.12.12、 |
给予提示信息,不允许提交 |
|
4位中有任意一位大于255(测试每一位) |
192.124.256.21 |
给予提示信息,不允许提交 |
|
第一个数字或者最后一个数字为0 |
0.1.2.3、255.255.255.0、23.54.156.0等 |
给予提示信息,不允许提交 |
|
其中某一位超过4个数字 |
145.1234.12.111 |
给予提示信息,不允许提交 |
|
特殊的IP |
255.255.255.255、0.0.0.0、1.1.1.1 |
|
|
正确的ip地址中混入非法字符/中文/英文 |
|
给予提示信息,不允许提交 |
|
保存功能:
进行新增或修改操作,输入相关内容后,多次提交保存,测试是否限制了重复保存 |
重复点击保存或 快速点击 |
在提交反馈之前,按钮呈灰色显示不允许点击 |
进行保存操作,测试当保存操作所费时间较长时,是否能提供进度条 |
当反馈时间达到12S以上时。 |
给予‘正在处理中’的进度条提示 |
若提示不能保存,也要察看数据库里是否多了一条数据 |
|
|
修改功能:
有单独的修改按钮 |
勾选一条记录,进行修改保存,测试是否能正常进行修改操作 |
|
能够正常进行修改保存,更新数据库中相应的值 |
|
|
未选择记录,点击修改按钮,测试是否对无选择记录进行修改做了控制 |
|
提示‘请选择一条记录!’或修改按钮呈灰色显示或默认选中第一条记录 |
|
|
选择一条记录,点击修改按钮,进行修改,点击确定按钮,测试是否对重复的记录进行了控制 |
将关键字段修改成一个已存在的值 |
提示‘该XX已存在,请重新输入 !’,光标停在XX输入框处 |
|
|
选择一条记录,点击修改按钮,再点击返回按钮,测试取消修改时是否会给予提示 |
不修改任何内容 |
直接返回原记录所在页 |
|
|
勾选多条记录,点击修改按钮,测试是否对勾选多个记录进行修改进行了控制。 |
|
提示‘您选择了多条记录,系统将修改第一条记录,且弹出第一条记录进行修改 |
|
|
修改引用的信息 |
引用的信息 |
提示不能修改,页面没有保存按钮 |
|
|
选择一条记录进行修改保存,测试信息修改是否正常 |
该信息被其他模块引用 |
能够正常进行修改保存,且被引用的信息也跟着修改 |
例如员工信息里的公司名称,那么在公司信息里这个名称做了修改,员工信息里面包含公司名称的也全部做了修改,相反员工信息里面针对公司名称照道理不允许修改 |
添加功能:
|
执行新增操作,测试是否能正常进行新增 |
输入必填字段 |
能正常完成新增操作 |
|
|
只填写界面上标识的必填字段(即标识*号)号的字段,测试界面上必填字段控制与数据库必填控制是否一致 |
|
能够正常进行保存 |
|
|
输入相关数据后,进行保存,测试当因任何原因无法提交时,原输入的内容是否保存 |
制造提交失败的数据,比如某个字段输入不符合要求 |
提交失败后,界面的数据仍保留,不会清空 |
|
|
执行新增操作,测试新增记录是否排在首行 |
对排序没有特殊要求的界面 |
满足新增记录排在首行的规则 |
不一定在首行,有些可能是按编号排序 |
|
执行新增操作,关键字段与数据库中已存在的值重复,测试是否对重复值进行了判断 |
重复提交以增加过的记录 |
提示该信息已经存在,请重新输入的提示信息 |
|
|
执行新增操作,测试是否对各字段的长度进行了限制 |
各输入的值都大于表中定义的长度 |
在各输入框中,输入的内容达到所定义的长度时,则限制无法输入了。(如果输入的为中文字符,则控制到一半的长时就够了) |
|
|
操作新增操作,测试是否对各输入框的非法字符进行了控制 |
在各输入框中,输入@#$%^&*()<p>~%[]-/’等。 |
1、不允许输入或提示‘你输入的 **中存在非法字符,请重新输入 |
|
|
在各输入框中输入相应的值进行新增保存,测试对各输入框中,输入内容前中后包含空格 |
1、前面存在空格 |
1、2、3能够正常去掉空格保存; |
|
|
在多行文本框中输入文字及回车进行保存,测试在多行文本框中,是否允许存在回车符 |
存在一个或多个回车键 |
能够正常进行保存及显示 |
|
|
测试针对特殊字段限制是否正常 |
1、主页地址 |
1、主页地址中可输入\ |
具体查看各个输入框对应校验,如电话号码 |
|
测试是否对必填字段进行了检查 |
关键字段不输入或输入空格 |
提示‘请输入XX,光标停留在第一个需输入的输入框处 |
光标离开输入框时便提示不符合标准 |
|
点击‘新增’按钮,在弹出的页面中,输入及选择相应信息,点击取消(返回)按钮,测试点击取消(返回)时是否会给予相应的提示 |
|
给予‘是否需要保存’的提示 |
需要这个提示比较好 |
|
输入非负整型数据,测试是否对数值型数据进行了格式化输入 |
1、输入正常的正整数 |
进行了格式化输入控制; |
|
|
输入整型数据,测试是否对数值型数据进行了格式化输入 |
1、输入正整数、0、负整数 |
进行了格式化输入控制: |
|
|
输入浮点型数据,测试是否对数值型数据进行了格式化输入 |
1、输入正数、0、负数 |
进行了格式化输入控制: |
|
|
点击新增按钮,输入信息后,点重置 |
|
能够清空已输入的数据,但不清空新增时默认生成的数据 |
|
邮箱格式:
必填 |
为必填项时,不输入任何字符或输入空格 |
不输入任何信息 |
校验不通过,给予提示信息 |
电子邮箱格式:英文+数字+标点符号(小数点,横杆)@(英文+数字+标点符号)\.com\.cn\.com.cn\.net 等 |
|
|
输入中文空格 |
|
|
|
|
输入英文空格 |
|
|
|
输入中文或英文 |
|
|
|
|
字符串中没有@和点 |
ceshi163com 全部转成大写测试一遍 |
|
|
|
字符串中有@和没有点 |
ceshi@163com |
|
|
|
字符串中没有@和有点 |
ceshi163.com |
|
|
|
字符串中有特殊字符 |
$huiyanni@163.com |
|
|
|
第一个字符串为@ 或点 |
.test或@test |
|
|
|
字符串的最后一位是@或点 |
test@163. |
|
|
|
@和点之间没有字符串 |
liao@.com |
|
|
|
字符串中多于两个@符号 |
|
|
|
|
字符串长度小于6,大于30个字符 |
werw, wew...@163.com |
|
|
|
字符串中有汉字 |
邮箱格式@qq.com |
|
|
|
输入@前面有分隔符的情况 |
a.b@163.com 校验可通过 |
|
|
|
输入@后面有多个分隔符(小数点) |
ab@163.c.d 校验可通过 |
|
身份证号码:
|
测试对身份证号码的溢出是否进行了控制 |
输入少于15位的身份证号码:如:36031219880708 |
给予提示信息,不允许提交 |
15位身份证号就是18位: 去掉最后一位和年的前两位,一般针对19 |
|
|
输入大于15位的身份证号码:如:3603121988101058 |
|
|
|
|
输入少于18位的身份证号码:如:36031219897521456 |
|
|
|
|
输入大于18位的身份证号码:如:3603121987052874123 |
|
|
|
测试是否对数字型数据是否进行了格式化输入 |
输入特殊字符串NULL、null、 空格的转义字符;<scrīpt></scrīpt>;<br>;<tr>;<td>;< /tr>等 |
进行了格式化输入,不可以输入非数字之外的数据 |
|
|
|
输入汉字 |
|
|
|
|
输入字母 |
|
|
必填 |
为必填项时,不输入任何字符或输入空格 |
不输入任何信息 |
必填,给予提示 |
|
|
|
输入中文空格 |
|
|
|
|
输入英文空格 |
|
|
|
测试是否对身份证号码进行了格式化输入(不存在的身份证号码) |
输入错误或不存在的身份证号码 332502201601012745 |
提示身份证号码不正确 |
|
|
输入的身份证号码是15位的真实号码(最后一位为字母或数字,字母是否一定是X,另外要求字母是否可以大小写都通过) |
|
提交成功 |
|
|
输入的身份证号码是18位的真实号码(最后一位为字母或数字) |
|
提交成功 |
|
登录(用户和账号):
输入正确的用户名和密码登陆 |
用户名:ceshi 密码:123465 |
登陆成功 |
不输入任何信息,点击登录 |
|
无法登录,提示请用户名和密码不能为空 |
输入存在的用户名,密码为空,点击登录 |
用户名:test |
无法登录,提示请密码不能为空 |
输入存在的密码,用户名为空,点击登录 |
密码:123456 |
无法登录,提示用户名不能为空 |
输入存在的用户名、不存在的密码,点击登录 |
用户名:test 密码:456 |
无法登录,提示请输入正确的密码 |
输入不存在的用户名、存在的密码,点击登录 |
用户名:test1 密码:123456 |
无法登录,提示该用户名不存在 |
输入不存在的用户名、不存在的密码,点击登录 |
用户名:test1 密码:123 |
无法登录,提示请输入正确的用户名或密码 |
连续输入三次用户名和密码不正确,点击登录 |
|
无法登录,提示:您没有使用该系统的权限,请与管理员联系! |
输入正确的用户名和密码,但用户名未区分小写 |
用户名:A001 密码:123 |
区分大小写,不能正常登录,提示请输入正确的用户名或密码 |
输入正确的用户名和密码,但密码未区分小写 |
用户名:a001 密码:A123 |
区分大小写,不能正常登录,提示请输入正确的的密码 |
在合法的用户名或密码前插入空格 |
用户名:空格a001 密码:空格123 |
提示请输入正确的用户名或密码 |
在合法的用户名或密码中间插入空格 |
用户名:aa空格a001 密码:11空格123 |
提示请输入正确的用户名或密码 |
在合法的用户名或密码后插入空格 |
用户名:aa001空格 密码:111空格 |
提示请输入正确的用户名或密码 |
输入已经禁止的用户名 |
用户名:test 密码:123456 |
您输入的用户名已经被禁止 |
输入已经删除的用户名 |
用户名:test 密码:123456 |
您输入的用户名不存在 |
验证是否支持快捷键tab键 |
|
鼠标光标依次跳转到用户名、密码、登录按钮上 |
用全三角输入法输入用户名或密码 |
用户名:abc 密码:123 |
请输入正确的用户名或密码 |
用户重置或取消:输入用户名或密码,点击重置或取消 |
用户名:test 密码:123456 |
清空输入框 |
按[enter]是否能登陆 |
|
|
注册功能:
不输入任何信息,直接点注册,验证是否必填 |
|
提示不能为空 |
输入用户名、密码和确认密码,点击提交表单 |
用户名:test 密码:123456 确认密码:123456 |
注册成功 |
输入用户名、密码和确认密码,用户名以字符开头 |
用户名:-test001 密码:123456 确认密码:123456 |
提示"用户名只能以数字或字母开头或结尾,请重新输入" |
输入用户名和密码,用户名含有非法字符 |
用户名:a0571&00 密码:123 |
提示用户名含有非法字符 |
输入用户名和密码,密码含有非法字符 |
用户名:a0571 密码:123*123 |
提示密码含有非法字符 |
输入用户名、密码和确认密码,两次密码输入不一致 |
用户名:a0571 密码:123 确认密码:456 |
提示两次密码输入不一致,请重新输入 |
输入用户名、密码和确认密码、邮箱,邮箱格式的不正确 |
用户名:a0571 密码:123 确认密码:123 邮箱:4412854qq.com |
提示邮箱地址不正确不正确 |
输入用户名和密码,输入的用户名已经被注册 |
用户名:test 密码:123456 |
提示用户名已经被注册,请重新输入 |
输入用户名和密码,用户名和密码长度都是最大值 |
用户名:testtest0123456789 密码:360312196808061028 |
注册成功 |
输入用户名和密码,用户名长度超过最大值 |
用户名:testtest01234567890 密码:123456 |
注册失败,提示用户名的长度超过最大有效值 |
输入用户名和密码,密码长度超过最大值 |
用户名:test 密码:3603121968080610280 |
注册失败,提示密码的长度超过最大有效值 |
输入用户名和密码,用户名和密码长度都是最小值 |
用户名:test01 密码:123456 |
注册成功 |
输入用户名和密码,用户名长度小于最小值 |
用户名:test 密码:123456 |
注册失败,提示用户名或密码的长度低于最小有效值 |
输入用户名和密码,密码长度小于最小值 |
用户名:test01 密码:123 |
|
输入用户名和密码,验证是否支持快捷键tab键 |
|
鼠标光标依次跳转到用户名、密码、确认密码等 |
输入已经存在的用户名,验证对已经存在用户的用户名大小写是否做出正确响应 |
用户名:Test001 |
注册成功(用户名区分大小写) |
验证码功能:
不输入任何字符 |
|
|
空格输入 |
|
|
输入空格+正确效验码,空格出现在开头、中间、结尾均需要测试 |
|
|
输入4位其他非数字内容 |
|
|
输入特殊字符 |
|
|
输入前3位或后3位验证码正确数字 |
|
|
输入4位正确校验码+其他数字 |
|
|
输入正确的用户名和密码登陆 |
用户名:ceshi 密码:123465 |
登陆成功 |
邮政编码功能:
必填 |
输入英文空格/不输入任何信息/输入中文空格 |
|
给予提示信息,不允许提交 |
|
输入特殊字符 |
|
给予提示信息,不允许提交 |
|
输入中、英文内容/中英文结合数字 |
|
给予提示信息,不允许提交 |
|
输入空格+数字,空格出现在开头、中间、结尾均需测试 |
|
前后去掉空格,中间含空格给予提示 |
|
输入小于6个数字 |
|
给予提示信息,不允许提交 |
|
输入6位数字 |
|
通过 |
|
输入大于6位位数字 |
|
给予提示信息,不允许提交 |
8. 项目测试评述:
在为期4—6周的测试进程中首先保证基础功能的实施以及登陆注册无误后可以成功绑定手机,其次在主界面和个人信息界面的界面显示无误。操作上简便,形成良好的人机交互效果,给人以良好的体验感。无论是用户还是管理员都能符合时下标准化的操作行为模式。在登陆账号和登出时没有任何其他问题。在兼容性上我们之后会尝试更多的机型,在进行调整的过程中,其实各个过程的结果都是基于微信平台而产生的,即各个效果相差不大。