场景
工作项序号:001 查看导入的图片
背景:
1) 典型用户:罗小欧[主要]、朱小叶[主要]
2) 用户的需求/迫切需要解决的问题
a. 罗小欧:出去玩拍了好多照片,想要在一个地方看到这些照片。
b. 罗小欧:把照片放到了好几个文件夹,每次都要点开好几个文件夹,好麻烦。
c. 朱小叶:我就想静静的欣赏下我们拍的照片。
3) 假设:
a. 用户已经拍摄好照片
b. 用户指定的照片路径无误
场景:
罗小欧打开我们的TOUCH App,进入设置界面,添加他存放照片的各个目录。添加成功后,他返回TOUCH主界面(也就是图库界面)。稍等一会,等待系统扫描图片完毕,他就可以看到这几个文件夹里的所有图片,都按照时间顺序罗列在图库界面中了。所有文件夹里的所有图片都在同一个界面中按照时间顺序罗列出(新的图片在列表的最上面,旧的在最下面)。
朱小叶利用相同的操作,添加图片文件夹,就可以在图库看到照片。现在她就可以欣赏拍摄的照片了。
用例文档
标题:查看照片
角色:用户
主要成功场景:
1. 打开软件
2. 进入设置界面
3. 添加照片文件夹
4. 返回图库界面
5. 等待图片扫描完成
6. 查看图片
扩展场景:
5.1. 添加的文件夹中没有图片
5.2. 图片个数过多,导入失败
6.1. 查看的图片过大,加载失败
功能说明书
目标:用户能查看到他指定的文件夹的照片
用户:希望查看照片的人
术语:
1. 图库:按时间顺序显示所有图片的界面
如何使用:
1. 打开软件
2. 点击软件左侧的汉堡菜单中的最后一个齿轮图标-设置按钮
3. 进入设置界面
4. 设置界面为一个可上下滚动的界面(如果当前屏幕装不下所有内容的话),界面从上到下的第一部分为“图片来源文件夹”
5. “图片来源文件夹”中罗列出用户添加过的所有文件夹完整路径名,每个路径名的右侧有一个打叉的按钮-删除按钮,点击后可以删除某条文件夹记录
6. 罗列出所有文件夹路径后,下面有一个加号按钮-添加图片文件夹的按钮,点击添加按钮
7. 弹出一个外部对话框,可以点击选择电脑中的文件夹
8. 选择好文件夹后点击确定
9. 在“图片来源文件夹”中可以看到新添加的文件夹
10. 通过点击汉堡菜单中的第一个照片按钮-图库按钮可以返回图库首页;或者点击整个软件的左上角的返回按钮,返回图库首页
11. 等待图片扫描完成
12. 等待扫描时,图库界面的右上角有一个循环的按钮一直在循环滚动,代表正在扫描新图片。停止不动时,代表扫描完成
13. 扫描完成后,用户可以点击任意一张图片,查看图片的大图,此时进入查看图片的界面
边界条件:
1. 界面暂时只支持中文
2. 初版不做软件优化,所以文件夹内的图片个数不能太多
3. 同理,每张图片不能太大
测试目标:
1. 软件查看用户添加的所有文件夹内的内容
2. 软件能识别出文件夹内的所有图片
3. 图库界面能显示所有图片
4. 所有图片能按照时间的顺序显示
数据收集:
1. 导入图片需要的时间
2. 添加文件夹功能的使用频度
3. 文件夹内的文件类型
4. 导入图片的大小
技术说明书
1. 界面
a. 汉堡菜单 MainPage
i. 左侧有一个SplitView,利用VisualStateManager可以根据窗口大小实现自动显示隐藏
ii. SplitView中的Pane分为4行,分别为汉堡菜单button,主选项的ListView,一个分隔符,次选项(如设置等)的ListView
iii. SplitView的Content放一个frame控件,用于页面切换
iv. 页面切换时,如果要跳转的page等于当前page,则不跳转
b. 图库 GalleryPage
i. 顶部有一个CommandBar,显示标题
ii. 包含一个girdview,gridview里一行默认有4个item,每个item里显示一张图片
iii. Gridview可以根据窗口大小实现自动切换里面item的大小和个数
iv. 所有图片来自于文件夹内扫描的图片
2. 类
a. 汉堡菜单项 HambugerMenuListItem
i. 属性:图标、名字、跳转的page
b. 图片 Image
i. 属性:图片路径 ImageUrl
1. 图片在磁盘中存放的位置,绝对路径
2. 文件夹扫描出的所有图片,把路径赋值给ImageUrl
3. 算法
a. 扫描文件夹内的图片
i. 第一版只扫描文件后缀为.jpg .jpeg .png的图片
ii. 扫描时记录这些图片的绝对路径
iii. 将这些路径记录在本地存储里
测试文档
测试功能:存储文件夹路径的SQLite数据库
测试类名:FolderDatabase
被测试类的主要功能:
1. 初始化数据库和表
2. 添加一条记录
3. 依据主键删除一条记录
4. 返回所有记录
单元测试类名:FolderDatabaseUnitTest
单元测试时间:2017/07/18
单元测试函数:
1. CleanCreateTest:如果已经存在数据库,删了重新创建一个
2. DuplicateCreateTest:重复初始化两次数据库
3. InsertAndGetFoldersTest:插入并读出数据
4. DeleteAndGetFoldersTest:删除并读出数据
单元测试预期结果:
1. 创建成功,Assert.IsNotNull(数据库文件)
2. 捕获异常,ExpectedException(typeof(InvalidOperationException))
3. 插入的数据能够被读取出来,Assert.AreEqual(插入的数据, 读出的数据)
4. 被删除后的数据不能被读取出来,Assert.AreEqual(插入并未被删除的数据, 读出的数据)
单元测试结果:
全部通过!
数据库类
对应的单元测试
文件夹路径 model
对应的单元测试