开发易犯问题跟踪表
深圳市艾派应用系统有限公司
Shenzhen iPi Application System Co.,Ltd. http://www.i314.net
归档记录表
前言
由于研发部各开发人员的开发经验参差不齐,造成在不同产品部的各项目中,都会出现一些类似的因疏忽而造成的程序问题,因此,由质量组统一对这些常犯的问题进行了整理,并将其中部分有借鉴意义的问题单请开发人员编写推荐解决方案,以减少以后同类问题的产生。
一 界面交互类问题
1.1 光标定位
1. 添加或修改时未停留在第一个待输入的输入框中 2. 弹出提示信息确定,光标不能定位提示输入的输入框中
1.2 必填项
3. 添加或修改时没有对必填项进行检查造成保存后台出错;
4. 必填项没有以*号标识,或标识时位置不一样,有些靠近文本框,有些离文本框很远;
1.3 重复值判断
5. 添加或修改时对关键字段,没有对关键字段进行重复值判断
● 问题描述:帐号模块中,帐号名作为唯一关键字,创建时仍可以创建帐号名相应同的用户,造成提
交失败。 6. 修改判断重复值时,没有排除自己进行判断
● 问题描述:帐号名不允许重复,修改帐号A 时,不对帐号名进行修改保存,系统也会提示帐号名
不允许重复。 ● 推荐解决方案: 单元测试
7. 添加或修改时对关键字段进行判重时,没有去除逻辑删除的记录来判断
● 问题描述:记录删除为逻辑删除,重新添加同名的记录保存时,提示该记录已存在,但实际上界面
上找不到相同的记录。
1.4 长度检查
8. 对界面的输入长度没有进行判断,造成提交失败
9. 判断字符长度时,常没有考虑中文,而造成提交失败。
1.5 提示信息不合理
10. 提示信息总不太规范,包括表达不清晰、错别字、标点符符号错误等 11. 如果有嵌套提示信息,提示信息的先后顺利不合理;
● 问题描述:当前记录不允许删除;选择该记录进行删除时,系统会先询问:您确定要真的删除吗?
确认后,再提示“对不起,该记录不允许删除”。 12. 重要操作或不可逆转的操作没有给予确认提示
● 问题描述:删除、清空等不可逆转操作没有给予询问提示。 13. 重要操作结果没有给予反馈信息; 14. 非必要的操作过多的反馈信息;
1.6 删除判断
15. 删除等相应控制操作没有判断不允许对自己进行操作
● 问题描述:帐号删除时,允许删除自己,造成没有任何帐号可以登录本系统;或允许删除在线正在使用的用户,造成该用户后续操作出现异常错误。 ● 推荐解决方案:
对于删除自己导致的问题。方案一:在页面上对自己所在行做处理,不提供删除操作。方案二:删除前做验证,不允许删除自己。方案三:不允许删除最后一个超级管理员。
对删除其他用户导致问题。方案:删除前检查对方是否在线,在线,则强制其退出系统;或者不能删除在线用户。
16. 如果关键字段为中文,进行修改或删除常失败。
● 问题描述:某模块中的记录以字段A 作为关键字段,如果A 的内容为中文,删除A 记录系统出现
异常。 ● 推荐解决方案:建议用post 方式提交,而不是get 方式!
1.7 特殊字符判断
17. 对于关键字段的输入没有限制特殊字符;
● 问题描述:一些特殊字符,如word 中的特殊符号、xml 文件中的标识符,sql 语句中的标识符等在
输入时不进行限制,但会造成在消息发送、查询、修改、删除等过程中出现异常。 18. 不同功能点对特殊字符的判断不一样;
● 问题描述:例如,在添加的时候,允许输入字符#,在修改或查询的时候却不允许修改字符#; ● 推荐解决方案:提前约定统一字符的控制;
19. 对于特定的字段长度控制及可输入控制不合理
● 问题描述:例如,邮件地址可输入长度只有10位;身证份号可输入中文,电话号码不允许输入-等等; ● 推荐解决方案:提前约定一些特定的字段长度以及约束
1.8 路径判断
20. 文件上传后的路径存放为绝对路径,造成文件无法下载
● 问题描述:在A 模块进行文件上传成功后,在数据库中存放的为绝对路径,在非服务器登录下载
该文件时,提示无法找到文件;或部署在ROOT 目录可以下载文件,非ROOT 目录下不可以下载文件。 21. 修改时如没有重新上传文件会清空掉原有路径
● 问题描述:新增某记录涉及到图片上传成功后,再修改该记录,不重新上传图片保存后,原图片路
径被清除。
1.9 信息保留
22. 当前提交不成功后,界面上已输入或已选择的字段不能保留。
● 问题描述:在新增页面,输入相应内容后执行提交操作,系统返回非前台返回的错误信息确认后,
新增页面上已输入的内容都被清空。 ● 推荐解决方案:当页面上填写内容较多时,建议方案一:采用无刷新方式提交。方案二:记住填写
内容,返回时,写入页面表单。 23. 当前提交不成功后,自动返回到上一个页面;
● 问题描述:在新增页面,输入相应内容后执行提交操作,系统返回非前台返回的错误信息确认后,
回到列表页面了,而不是在新增页面。 ● 推荐解决方案:成功后返回页、出错后的返回页,需要做区分 24. 无法记住当前记录在网页中的DIV 位置,而总是回到页面上方。
● 问题描述:在当前列表中,拖动垂直滚动条到页面下方,点击某记录修改返回后,总是返回到页面
上方了,而不是所修改记录的所在位置。 ● 推荐解决方案:建议方案一:将列表页面置于iframe 里。方案二:记住滚动条的高度值,转回页
面后,重置滚动条高度。
1.10 页面返回
25. 页面返回没有刷新
● 问题描述:添加或修改记录成功后,跳转到列表页面,没有对所变更的记录进行刷新; 26. 页面返回提示找不到网页
● 问题描述:添加或修改或查看返回到上页面,提示找不到网页。 27. 页面返回到不正确的页面
● 问题描述:对于多页嵌套的情况,在最里面一个页面返回,往往不能返回它的上一个页面,而是直
接返到最外层的页面了。
1.11 列表显示
28. 列表中的字段显示不合理
● 问题描述:列表中的字段显示长度没有限制,造成折行界面显示不美观;
● 推荐解决方案:在列表中,对于内容普通较多的字段,显示应以定长+„„的方式显示;以避免折
行的现象。
1.12 导出
29. 执行导出操作后,当前页面的脚本失效;
● 问题描述:在A 页面执行导出操作成功后,再点击A 页面上的其它按钮,系统无反应;必须转到
其它页面后再转回来方正常; ● 推荐解决方案:建议用隐藏的iframe 来完成导出操作。 30. 执行导出操作时,弹出的下载页面常常无法支持直接打开文件;
● 问题描述:在A 页面执行导出操作(导出的为可打开的如xls 文件,在弹出打开/另存为对话框中,
直接打开,系统提示文件名异常或损坏或没有权限,提示不能打开) ● 推荐解决方案:文件名不要过长,要注意:导出时文件名是按UTF-8编码,而且路径是在
C:\Documents and Setting\登录OS 帐号 下。 31. 执行导出操作时,取消出现错误。
● 问题描述:在A 页面执行导出操作,在弹出的打开/另存为对话框中,点击取消出现权限错误。 32. IE6下,文件路径过长导出时打开异常
● 问题描述:当文件名称长(一般达到15或20个汉字)导出后直接打开报异常。
33. 当导出的表单内容中包括数值字段时,且数值较大时;导出的结果字段常常为科学记数法(界面显示也
一样)
1.13 查询相关问题
34. 带查询条件翻页后,查询条件不能保留;
● 问题描述:设置查询条件进行查询出多页记录后,再执行翻页操作,原设置的查询条件被清空或恢
复为默认值(为list 列表选择的情况下,出现概率更多) ● 推荐解决方案:翻页条件要保持当前页面的查询条件
35. 带查询条件执行删除或修改操作,查询条件没有保留;
● 问题描述:设置查询条件查询出记录后,执行删除操作,原设置的查询条件被清空或恢复为默认值。 ● 推荐解决方案:一般来说,要回到删除时所在的列表页面,此时做删除,要保持当前页面的查询条
件,并传到列表查询处理操作Action 。 36. 翻页后执行非查询操作,不能回到原所在页;
● 问题描述:翻页X 页后,选择某条记录进行修改或删除操作,系统自动回到首页了,而没有保留
在原记录所在页; ● 推荐解决方案:对于该类功能,都必须遵循从哪里进去即回到哪里的原则; 37. 翻页后,重新查询不能定位到首页;
● 问题描述:翻到X 页后,设置查询条件重新查询,当前页仍为X 页,而没有返回到首页。 ● 推荐解决方案:每次重新查询之后,page 都要置1 38. 存在开始及结束时间查询条件,默认条件不合理;
● 问题描述:
1. 业务约束,表中只会存在今天之前的记录,但查询条件中的开始日期默认值仍为当天,造成默
认情况下永远查不出记录; 2. 时间控制精确到时/分/秒,开始时间/结束时间即默认为到当前的时/分/秒;造成默认情况下永
远无法查出记录; ● 推荐解决方案:设计环节就要定义好处理规则 39. 默认查询条件中存在记录时,进入列表不能显示记录。
● 问题描述:对应表中存在符合默认条件的记录,进入列表中不能显示相应的记录,必须再点击一次
查询方可。 ● 推荐解决方案:每次带默认条件进入页面即查询出相应的记录 40. 受权限控制时的查询结果不正确
● 问题描述:模块A 列表的记录不同的用户查看的内容不一致,一般默认条件下,查询结果正确;
但更新查询条件重新查询时,结果不正确。 ● 推荐解决方案:请做好权限管理 41. 列表的中的记录排序不正确;
● 问题描述:模块A 没有明确的排序规范;现在默认按时间顺序进行排序;或是随便的排序规则; ● 推荐解决方案:常规情况下,按时间倒序排序会更合理(即新增的记录排在首行);或有特殊业务
性质的,可以根据当前页面的数据来确定排序的规则。 42. 进入查询页面默认取表中数据不合理
● 问题描述:进入查询页面默认查询表中所有的记录,且一次性查询,造成查询速度过慢(需要了解
数据量的大小,有一定数据积累才容易测出来)。 ● 推荐解决方案:常规情况下,设置一定的条件进行查询,且一次只取一页的数据出来,翻页时再取
下一页的数据。
1.14 时间相关问题
43. 开始时间=结束时间查询不出当天的记录;
● 问题描述:表中的时间字段精确到时分秒,存在10/31号的记录,在列表中设置开始时间/结束时
间都为31号时,无法查询出31号的记录; ● 推荐解决方案: 写SQL 语句要考虑到时分秒
1.15 翻页相关问题
44. 常忘记完善翻页功能,而造成出错;
● 问题描述:A 列表中提供了翻页功能,当存在多于一页的记录时,点击翻页控件中的页数,出现错
误; 45. 不提供翻页功能却按翻页条数进行当前页显示行的限制
● 问题描述:A 列表页面不提供翻页功能;配置文件中配置WEB 的显示行数为10;在A 列表中,
记录行数超过10条的记录不能被显示出来。 ● 推荐解决方案:设计文档或思路要清晰,并确保项目组内成员都明确。
二 业务相关类
46. 群发任务统计时,如消息长度超过一条,则统计的中成功率等常不正确。
● 问题描述:任务发送列表详情页面,对于分条、长消息统计时,失败用户数统计不正确。(目前统
计为失败短信数)
三 配置类
47. 配置项没有提供默认值;
● 问题描述:新增一个配置项,如sCcount ,该配置项没有提供配默认值,当现网升级后未配置相应
的值时,造成异常。 ● 推荐解决方案:在确认好添加该配置项时,即对默认值进行定义; 48. 配置项提供的默认值不合理;
● 问题描述:如web 页面的分页条数限制,设置为100;
● 推荐解决方案:在提交版本前,对配置文件的默认值进行检查; 49. 配置文件中的编码方式不一样;
● 问题描述:XML 配置文件,需要使用相同的编码方式,GBK 和UTF-8混合使用容易出现解析错误。 ● 推荐解决方案:提前在组内定义好该项目所使用配置文件的编码方式 50. 版本号有时候会忘记修改
● 问题描述:一个程序中的多个涉及版本号的地方,有时候会忘记修改。 ● 推荐解决方案:提前收集版本号的所有文件,提交之前统一进行检查。
开发易犯问题跟踪表
深圳市艾派应用系统有限公司
Shenzhen iPi Application System Co.,Ltd. http://www.i314.net
归档记录表
前言
由于研发部各开发人员的开发经验参差不齐,造成在不同产品部的各项目中,都会出现一些类似的因疏忽而造成的程序问题,因此,由质量组统一对这些常犯的问题进行了整理,并将其中部分有借鉴意义的问题单请开发人员编写推荐解决方案,以减少以后同类问题的产生。
一 界面交互类问题
1.1 光标定位
1. 添加或修改时未停留在第一个待输入的输入框中 2. 弹出提示信息确定,光标不能定位提示输入的输入框中
1.2 必填项
3. 添加或修改时没有对必填项进行检查造成保存后台出错;
4. 必填项没有以*号标识,或标识时位置不一样,有些靠近文本框,有些离文本框很远;
1.3 重复值判断
5. 添加或修改时对关键字段,没有对关键字段进行重复值判断
● 问题描述:帐号模块中,帐号名作为唯一关键字,创建时仍可以创建帐号名相应同的用户,造成提
交失败。 6. 修改判断重复值时,没有排除自己进行判断
● 问题描述:帐号名不允许重复,修改帐号A 时,不对帐号名进行修改保存,系统也会提示帐号名
不允许重复。 ● 推荐解决方案: 单元测试
7. 添加或修改时对关键字段进行判重时,没有去除逻辑删除的记录来判断
● 问题描述:记录删除为逻辑删除,重新添加同名的记录保存时,提示该记录已存在,但实际上界面
上找不到相同的记录。
1.4 长度检查
8. 对界面的输入长度没有进行判断,造成提交失败
9. 判断字符长度时,常没有考虑中文,而造成提交失败。
1.5 提示信息不合理
10. 提示信息总不太规范,包括表达不清晰、错别字、标点符符号错误等 11. 如果有嵌套提示信息,提示信息的先后顺利不合理;
● 问题描述:当前记录不允许删除;选择该记录进行删除时,系统会先询问:您确定要真的删除吗?
确认后,再提示“对不起,该记录不允许删除”。 12. 重要操作或不可逆转的操作没有给予确认提示
● 问题描述:删除、清空等不可逆转操作没有给予询问提示。 13. 重要操作结果没有给予反馈信息; 14. 非必要的操作过多的反馈信息;
1.6 删除判断
15. 删除等相应控制操作没有判断不允许对自己进行操作
● 问题描述:帐号删除时,允许删除自己,造成没有任何帐号可以登录本系统;或允许删除在线正在使用的用户,造成该用户后续操作出现异常错误。 ● 推荐解决方案:
对于删除自己导致的问题。方案一:在页面上对自己所在行做处理,不提供删除操作。方案二:删除前做验证,不允许删除自己。方案三:不允许删除最后一个超级管理员。
对删除其他用户导致问题。方案:删除前检查对方是否在线,在线,则强制其退出系统;或者不能删除在线用户。
16. 如果关键字段为中文,进行修改或删除常失败。
● 问题描述:某模块中的记录以字段A 作为关键字段,如果A 的内容为中文,删除A 记录系统出现
异常。 ● 推荐解决方案:建议用post 方式提交,而不是get 方式!
1.7 特殊字符判断
17. 对于关键字段的输入没有限制特殊字符;
● 问题描述:一些特殊字符,如word 中的特殊符号、xml 文件中的标识符,sql 语句中的标识符等在
输入时不进行限制,但会造成在消息发送、查询、修改、删除等过程中出现异常。 18. 不同功能点对特殊字符的判断不一样;
● 问题描述:例如,在添加的时候,允许输入字符#,在修改或查询的时候却不允许修改字符#; ● 推荐解决方案:提前约定统一字符的控制;
19. 对于特定的字段长度控制及可输入控制不合理
● 问题描述:例如,邮件地址可输入长度只有10位;身证份号可输入中文,电话号码不允许输入-等等; ● 推荐解决方案:提前约定一些特定的字段长度以及约束
1.8 路径判断
20. 文件上传后的路径存放为绝对路径,造成文件无法下载
● 问题描述:在A 模块进行文件上传成功后,在数据库中存放的为绝对路径,在非服务器登录下载
该文件时,提示无法找到文件;或部署在ROOT 目录可以下载文件,非ROOT 目录下不可以下载文件。 21. 修改时如没有重新上传文件会清空掉原有路径
● 问题描述:新增某记录涉及到图片上传成功后,再修改该记录,不重新上传图片保存后,原图片路
径被清除。
1.9 信息保留
22. 当前提交不成功后,界面上已输入或已选择的字段不能保留。
● 问题描述:在新增页面,输入相应内容后执行提交操作,系统返回非前台返回的错误信息确认后,
新增页面上已输入的内容都被清空。 ● 推荐解决方案:当页面上填写内容较多时,建议方案一:采用无刷新方式提交。方案二:记住填写
内容,返回时,写入页面表单。 23. 当前提交不成功后,自动返回到上一个页面;
● 问题描述:在新增页面,输入相应内容后执行提交操作,系统返回非前台返回的错误信息确认后,
回到列表页面了,而不是在新增页面。 ● 推荐解决方案:成功后返回页、出错后的返回页,需要做区分 24. 无法记住当前记录在网页中的DIV 位置,而总是回到页面上方。
● 问题描述:在当前列表中,拖动垂直滚动条到页面下方,点击某记录修改返回后,总是返回到页面
上方了,而不是所修改记录的所在位置。 ● 推荐解决方案:建议方案一:将列表页面置于iframe 里。方案二:记住滚动条的高度值,转回页
面后,重置滚动条高度。
1.10 页面返回
25. 页面返回没有刷新
● 问题描述:添加或修改记录成功后,跳转到列表页面,没有对所变更的记录进行刷新; 26. 页面返回提示找不到网页
● 问题描述:添加或修改或查看返回到上页面,提示找不到网页。 27. 页面返回到不正确的页面
● 问题描述:对于多页嵌套的情况,在最里面一个页面返回,往往不能返回它的上一个页面,而是直
接返到最外层的页面了。
1.11 列表显示
28. 列表中的字段显示不合理
● 问题描述:列表中的字段显示长度没有限制,造成折行界面显示不美观;
● 推荐解决方案:在列表中,对于内容普通较多的字段,显示应以定长+„„的方式显示;以避免折
行的现象。
1.12 导出
29. 执行导出操作后,当前页面的脚本失效;
● 问题描述:在A 页面执行导出操作成功后,再点击A 页面上的其它按钮,系统无反应;必须转到
其它页面后再转回来方正常; ● 推荐解决方案:建议用隐藏的iframe 来完成导出操作。 30. 执行导出操作时,弹出的下载页面常常无法支持直接打开文件;
● 问题描述:在A 页面执行导出操作(导出的为可打开的如xls 文件,在弹出打开/另存为对话框中,
直接打开,系统提示文件名异常或损坏或没有权限,提示不能打开) ● 推荐解决方案:文件名不要过长,要注意:导出时文件名是按UTF-8编码,而且路径是在
C:\Documents and Setting\登录OS 帐号 下。 31. 执行导出操作时,取消出现错误。
● 问题描述:在A 页面执行导出操作,在弹出的打开/另存为对话框中,点击取消出现权限错误。 32. IE6下,文件路径过长导出时打开异常
● 问题描述:当文件名称长(一般达到15或20个汉字)导出后直接打开报异常。
33. 当导出的表单内容中包括数值字段时,且数值较大时;导出的结果字段常常为科学记数法(界面显示也
一样)
1.13 查询相关问题
34. 带查询条件翻页后,查询条件不能保留;
● 问题描述:设置查询条件进行查询出多页记录后,再执行翻页操作,原设置的查询条件被清空或恢
复为默认值(为list 列表选择的情况下,出现概率更多) ● 推荐解决方案:翻页条件要保持当前页面的查询条件
35. 带查询条件执行删除或修改操作,查询条件没有保留;
● 问题描述:设置查询条件查询出记录后,执行删除操作,原设置的查询条件被清空或恢复为默认值。 ● 推荐解决方案:一般来说,要回到删除时所在的列表页面,此时做删除,要保持当前页面的查询条
件,并传到列表查询处理操作Action 。 36. 翻页后执行非查询操作,不能回到原所在页;
● 问题描述:翻页X 页后,选择某条记录进行修改或删除操作,系统自动回到首页了,而没有保留
在原记录所在页; ● 推荐解决方案:对于该类功能,都必须遵循从哪里进去即回到哪里的原则; 37. 翻页后,重新查询不能定位到首页;
● 问题描述:翻到X 页后,设置查询条件重新查询,当前页仍为X 页,而没有返回到首页。 ● 推荐解决方案:每次重新查询之后,page 都要置1 38. 存在开始及结束时间查询条件,默认条件不合理;
● 问题描述:
1. 业务约束,表中只会存在今天之前的记录,但查询条件中的开始日期默认值仍为当天,造成默
认情况下永远查不出记录; 2. 时间控制精确到时/分/秒,开始时间/结束时间即默认为到当前的时/分/秒;造成默认情况下永
远无法查出记录; ● 推荐解决方案:设计环节就要定义好处理规则 39. 默认查询条件中存在记录时,进入列表不能显示记录。
● 问题描述:对应表中存在符合默认条件的记录,进入列表中不能显示相应的记录,必须再点击一次
查询方可。 ● 推荐解决方案:每次带默认条件进入页面即查询出相应的记录 40. 受权限控制时的查询结果不正确
● 问题描述:模块A 列表的记录不同的用户查看的内容不一致,一般默认条件下,查询结果正确;
但更新查询条件重新查询时,结果不正确。 ● 推荐解决方案:请做好权限管理 41. 列表的中的记录排序不正确;
● 问题描述:模块A 没有明确的排序规范;现在默认按时间顺序进行排序;或是随便的排序规则; ● 推荐解决方案:常规情况下,按时间倒序排序会更合理(即新增的记录排在首行);或有特殊业务
性质的,可以根据当前页面的数据来确定排序的规则。 42. 进入查询页面默认取表中数据不合理
● 问题描述:进入查询页面默认查询表中所有的记录,且一次性查询,造成查询速度过慢(需要了解
数据量的大小,有一定数据积累才容易测出来)。 ● 推荐解决方案:常规情况下,设置一定的条件进行查询,且一次只取一页的数据出来,翻页时再取
下一页的数据。
1.14 时间相关问题
43. 开始时间=结束时间查询不出当天的记录;
● 问题描述:表中的时间字段精确到时分秒,存在10/31号的记录,在列表中设置开始时间/结束时
间都为31号时,无法查询出31号的记录; ● 推荐解决方案: 写SQL 语句要考虑到时分秒
1.15 翻页相关问题
44. 常忘记完善翻页功能,而造成出错;
● 问题描述:A 列表中提供了翻页功能,当存在多于一页的记录时,点击翻页控件中的页数,出现错
误; 45. 不提供翻页功能却按翻页条数进行当前页显示行的限制
● 问题描述:A 列表页面不提供翻页功能;配置文件中配置WEB 的显示行数为10;在A 列表中,
记录行数超过10条的记录不能被显示出来。 ● 推荐解决方案:设计文档或思路要清晰,并确保项目组内成员都明确。
二 业务相关类
46. 群发任务统计时,如消息长度超过一条,则统计的中成功率等常不正确。
● 问题描述:任务发送列表详情页面,对于分条、长消息统计时,失败用户数统计不正确。(目前统
计为失败短信数)
三 配置类
47. 配置项没有提供默认值;
● 问题描述:新增一个配置项,如sCcount ,该配置项没有提供配默认值,当现网升级后未配置相应
的值时,造成异常。 ● 推荐解决方案:在确认好添加该配置项时,即对默认值进行定义; 48. 配置项提供的默认值不合理;
● 问题描述:如web 页面的分页条数限制,设置为100;
● 推荐解决方案:在提交版本前,对配置文件的默认值进行检查; 49. 配置文件中的编码方式不一样;
● 问题描述:XML 配置文件,需要使用相同的编码方式,GBK 和UTF-8混合使用容易出现解析错误。 ● 推荐解决方案:提前在组内定义好该项目所使用配置文件的编码方式 50. 版本号有时候会忘记修改
● 问题描述:一个程序中的多个涉及版本号的地方,有时候会忘记修改。 ● 推荐解决方案:提前收集版本号的所有文件,提交之前统一进行检查。