场景
工作项序号:001 设定便签时钟提醒
背景:
1) 典型用户:罗小叶[主要],朱小欧[少数]
2) 用户的需求/迫切需要解决的问题
a. 罗小叶:记到便签上的生产实习讲座又忘去了,它怎么不知道提醒我啊
b. 朱小欧:后天就是实验报告截止时间了,什么时候开始写比较好呢
3) 假设:
a. 用户习惯于将待办事项记录在便签上
b. 用户有拖延症
场景:
罗小叶打开我们的便签软件, 添加好自己的待办事项,发现我们的便签其实是有提醒功能的,罗小叶感到愉悦,罗小叶看到自己的下一次生产实习讲座是在明天晚上20:30,将时钟提醒设为了明天晚上20:00,到时间后,如果罗小叶正在使用电脑,就一定能收到提醒.
朱小欧以同样操作在设置时钟提醒时,忍痛将提醒设置在了截至时间的3个小时前,如果到提醒时朱小欧发现自己还没有开始写,就能点击"延迟提醒为"下拉菜单选择延迟1小时.解决了交报告的问题.
用例文档
标题:设置时钟提醒
角色:用户
主要成功场景:
1. 打开软件
2. 在便签也写好便签
3. 点击...菜单
4. 选择时钟提醒
5. 设置提醒时间
扩展场景:
5.1. 设定时间为过去的时间
5.2. 到达设定时间后需要推迟
6.1. 提醒时间时用户不在电脑前
功能说明书
目标:用户能在需要的时候收到提醒
用户:希望设置提醒的人
术语:
1. 图库:按时间顺序显示所有图片的界面
如何使用:
1. 打开软件
2. 选中希望设置提醒的便签
3. 在标题栏点击...按钮
4. 选择带有闹钟图标的提醒按钮
5. 弹出带有日期时间选择器的对话框,用户选择完成后点击保存
6. 到达时间后弹出系统提醒,用户可选择推迟时间或者消除提醒
7. 若推迟,则在推迟时间到达时再次提醒
边界条件:
1. 界面暂时只支持中文
2. 不能单独删除提醒
测试目标:
1. 能正常弹出提醒
2. 重复设置后删除原有提醒
3. 删除便签的同时删除提醒
技术说明书
1. 界面
a. 汉堡菜单 MainPage
i. 左侧有一个SplitView,利用VisualStateManager可以根据窗口大小实现自动显示隐藏
ii. SplitView中的Pane分为X行,分别为汉堡菜单button,和与便签一一对应的(X-1)个ListView
iii. SplitView的Content放一个frame控件,用于页面切换
a. 标题栏 BlankPage
i. 顶部有一个StackPanel, 放置多个按钮,与标题栏等高
ii. 最后一个按钮为...按钮,点击后弹出Flyout显示更多功能
c. 便签内容 NewNoteBoxUserControl
i. 主体为一个TextBox
2. 类
a. 提醒类 Model.Notification
i. 设计模式:单例
ii. 方法:
Create()创建提醒
Delete()删除提醒
Show()返回提醒列表
3. 算法
i. 以便签随机生成的ID为标识进行添加和删除
ToastContent toastContent = new ToastContent()
{
Visual = visual,
Actions = actions,
Scenario = ToastScenario.Reminder,
// Arguments when the user taps body of toast
Launch = new QueryString()
{
{ "action", "viewConversation" },
//{ "conversationId", conversationId.ToString() }
}.ToString()
};
ii. 将传入的Lable属性设为便签Content
iii. 将创建的提醒加入系统提醒队列
使用系统提供的ToastNotificationManager.CreateToastNotifier().AddToSchedule();
iiii. 时间非法处理
测试文档
测试的主要功能:
1. 添加一条记录
2. 根据ID删除一条记录
3. 返回所有记录并计数
单元测试类名:NotificationTest
单元测试时间:2018/07/27
单元测试函数:
1. CreateTest()
2. DeleteTest()
单元测试预期结果:
1. Assert.AreEqual(1 + now, toast.Show().Count);添加成功
2. Assert.AreEqual(now, toast.Show().Count);先添加再删除成功
单元测试结果: