1. Consistency
1.1. Familiarity
1.2. Explainability
1.3. World
1.4. History
1.5. Image
1.6. Comparable Products
1.7. Claims
1.8. Users’ Desires
1.9. Product
1.10. Purpose
1.11. Statutes and Standards
2. Product Elements
2.1. Structure
2.2. Function
2.3. Data
2.4. Interfaces
2.5. Platform
2.6. Operations
2.7. Time
3. Test Techniques
3.1. Functional Testing
3.1.1. Run
3.1.1.1. Subsequent Runs
3.1.1.1.1. Recall data/cache (or clear up each start)?
3.1.1.2. First Run
3.1.1.2.1. Initial data creation
3.1.2. Private Chat feature
3.1.2.1. Is this available all the time?
3.1.2.2. Is this a "premium" feature, that must be unlocked for only certain licenses?
3.1.2.3. Does the Private Chat feature use encryption?
3.1.2.4. Does private chat history get logged?
3.1.3. Chat module ("Simple Chat with WCF" window)
3.1.3.1. Basic Functions
3.1.3.1.1. Action Menu
3.1.3.1.2. Main activity window/chat log (top-left panel)
3.1.3.1.3. User List (top-right panel)
3.1.4. Do user levels exist (e.g. admin, mods, generic chatter, observer, etc.)
3.2. Domain Testing
3.2.1. Chat server IP entry limitations?
3.2.1.1. Alpha
3.2.1.2. Numeric
3.2.1.2.1. Limited octets (0-255)
3.2.2. DOC: "Don’t delete or manually edit any file under ChatServer folder"
3.2.2.1. Why? What happens if I...
3.2.2.1.1. ...Modify them?
3.2.2.1.2. ...Delete them
3.2.2.1.3. ...Move them
3.2.2.2. If clients have access to this, then can we better protect these files somewhere else? (let's remove the sharp stick)
3.2.2.2.1. Perhaps in a container?
3.2.3. Usernames and Passwords are stores in clear text
3.3. Stress Testing
3.4. Flow Testing
3.5. Scenario Testing
3.5.1. Single-user
3.5.1.1. Public chat in main channel
3.5.1.2. Private chat with self (possible?)
3.5.2. Two users
3.5.2.1. Public chat in main channel
3.5.2.2. Private chat (A to B)
3.5.2.3. Private chat (B to A)
3.5.3. Limit users (1,000?)
3.5.3.1. Public chat in main channel (as multiple users)
3.5.3.2. Private chat with individual users
3.5.3.3. Private chat with multiple users (possible?)
3.6. Claims Testing
3.7. User Testing
3.8. Risk Testing
3.8.1. Unhandled Exception is thrown if the server process is terminated during an active chat session (may be as designed, but UX expectations of many chat users these days may require friendly error message notification/UI be created)
3.9. Automatic Checking
4. Quality Criteria
4.1. Capability
4.1.1. Sign-up process
4.1.1.1. Web based?
4.1.1.2. Local credentials (DB)?
4.1.1.3. Username limitations (e.g. no special chars?)
4.1.1.4. Password limitations (e.g. no special chars?)
4.1.1.5. The sign-up process appears and allows user entry, even when the server is not running. Is this normal/expected behavior or should we prompt the user for server start before they spend the time attempting to sign-up?
4.1.2. Users are allowed to send blank messages (this may be as designed, but is inconsistent with Comparable Products)
4.1.3. User must use the "Send" button, and cannot use "Enter" to reliably send messages.
4.1.3.1. If Enter is used, the activity monitor quickly flashes the new message, then blanks out the screen and all history is lost (not scrollable either)
4.1.3.2. When the "Send" button is used, the activity window shows as expected (based on the 'Comparable Product' oracle via FEWHICCUPPS product consistency model)
4.1.4. User Account expiry
4.1.4.1. e.g. Does a user account get auto-deleted in 'n' (30, 60, 90) number of days if they have not logged in recently?
4.1.5. Sprint 1 (Explicit)
4.1.5.1. US1: As an IT administrator, I would like user to login with the tool before he/she can use any function, so that only authorized user can use the tool.
4.1.5.1.1. AC1: The tool should provide user login dialogue with user name and password before start using other functions
4.1.5.1.2. AC2: Failed login will be alerted to user, and the account will be locked after 5 times of failed-retry.
4.1.5.2. US2: As a new user, I would like to be able to register my account with the tool, so that I don’t need to go through system admin.
4.1.5.2.1. AC1: Login dialogue should provide user registration function
4.1.5.2.2. AC2: The tool requires user name and password to register a user
4.1.5.2.3. AC3: The tool should acknowledge the success/failure of user registration
4.1.5.3. US3: As an Engineer, I would like to create and edit memo with this tool, so that I can record my ideas quickly without searching for pen and paper.
4.1.5.3.1. AC 1: User should be able to create memo at any time while using the tool
4.1.5.3.2. AC 2: Each memo has a limit of 300 characters
4.1.5.4. US4: As an engineer, I would like to be able to save my memo at any time, from any machine, using this tool, so that I can record my idea conveniently.
4.1.5.4.1. AC 1: User should be able to save his/her memo using the tool during editing any anytime
4.1.5.4.2. AC2: If saving fails, the tool should alert user about the failure and prompt user to save to note separately.
4.1.5.5. US5: As an Engineer, I would like to access saved memo from anywhere, any machine using this tool connected to network, so that I don’t need to remember where I saved it.
4.1.5.5.1. AC 1: User should be able to retrieve the relevant memo using the tool
4.1.5.5.2. AC2: User should be able to see the list of memos he/she created
4.1.5.5.3. AC3: User should not see memos saved by other users
4.1.5.6. US6: As an IT administrator, I would like the tool not to save any copy of memos into local machines, so that information security can be ensured.
4.1.5.6.1. AC 1: The tool should not save any temp copy into local machine when user working with a memo
4.1.5.7. US7: As an Engineer, I would like to be able to publish message to all users online, so that I can make announcement easily.
4.1.5.7.1. AC2: Max message length is 140 characters
4.1.5.7.2. AC1: User should be able to publish message at any time
4.1.5.7.3. AC4: All recipients online should be able to view or ignore the published message
4.1.5.7.4. AC3: All recipients online should receive alert about the published message event before open the message
4.1.6. Sprint 2 (Explicit)
4.1.6.1. US8: As a new user, I would like the tool to bring me to registration dialogue if I login wrongly, so that I do not need to manually go back to login page and click on register button.
4.1.6.1.1. AC1: Alert message box should be displayed to remind user to register whenever login fail
4.1.6.1.2. AC2: User should be brought to registration page if responses ‘OK’ on the alert dialogue, and stay in login page if provide other responses.
4.1.6.2. US9: As an IT administrator, I would like the tool to support Server configuration, so that I can easily setup multiple servers for back up purpose.
4.1.6.2.1. AC1: User should be able to specify the server address for the chatting tool.
4.1.6.2.2. AC2: Tool will alert user if the server is not reachable
4.1.6.2.3. AC3: Once connection failed to current server, user should be able to point to different server without restart application.
4.1.6.3. US10: As an Engineer, I would like to do one-one chat with a selected user, so that our communication remain private between the selected user and I only.
4.1.6.3.1. AC1: User should be able to selected an online user to request private chat
4.1.6.3.2. AC2: During the private chat session, only requestor and recipient can see the message
4.1.6.3.3. AC3: One user can do private chat with different users at the same time
4.1.6.4. US11: As an Engineer, I would like to be able to ignore private chat request, so that I won’t receive annoying messages while I am focusing on my work.
4.1.6.4.1. AC1: User shouldn’t be able to send private message unless recipient actively accept the request
4.1.6.4.2. AC2: User shouldn’t be able to send private message if recipient quit from the chat session
4.1.7. Product Backlog
4.1.7.1. US12: As a manager, I would like to be able to view other engineer’s memo so that I can keep track each employee’s performance by knowing what they are doing.
4.1.7.1.1. AC1: User should be able send out a request on selected online user to view their memos
4.1.7.1.2. AC2: Users should be able to reject request of viewing their memos
4.1.7.1.3. AC3: User should be able to open others’ memo if request granted
4.1.7.1.4. AC4: Memos viewed by non-author are read-only
4.1.7.2. US13: As an Engineer, I should be able to start private group chat, so that I can conduct online discussion within our project group.
4.1.7.2.1. AC1: User should be able to create private chat session with multiple selected user online
4.1.7.2.2. AC2: The chat message should be visible to recipients who accept the private group chat request
4.1.7.2.3. AC3: Quit of individual user in the private group chat should not end up the complete chat session
4.2. Reliability
4.2.1. Risks if 'server' product not run as Administrator?
4.2.1.1. Port 12345 will not instantiate?
4.2.1.2. Is R/W access to file system needed?
4.2.1.2.1. Which folders contain writable data, log files, etc?
4.3. Usability
4.3.1. Keyboard shortcuts not available inside chat client (using the mouse to manually select, copy, paste, etc does work)
4.3.1.1. e.g. CTRL+A does not Select All
4.3.1.2. e.g. CTRL+C does not copy
4.3.1.3. e.g. CTRL+V does not paste
4.3.1.4. etc.
4.3.2. No scrollbar within chat activity window (user must use arrow keys)
4.4. Charisma
4.4.1. UI
4.4.1.1. Color palletes
4.4.1.1.1. Red/Black
4.4.1.1.2. Others?
4.4.1.2. OS DPI/scaling
4.4.1.2.1. Many times, when Windows scaling is used (e.g. anything other than 100%) then apps that otherwise function can become unusable.
4.4.1.3. Window scaling (chat window does not scale responsively)
4.4.2. Chat window footer text not legible ("....Work Sample")
4.4.3. Initial login window says "Gigachat" but chat window says "GigaChat". This is a charisma bug, as it conflicts with consistent product branding practices.
4.5. Security
4.5.1. DOC: "Make sure port 12345 is available on your system."
4.5.1.1. NetBus Trogan Horse (and other viruses) uses this port. If this is used in production, product security and reliability could be compromised.
4.5.1.1.1. Randomize the port?
4.5.1.1.2. Choose a port that is not as easily guessed?
4.6. Scalability
4.7. Compatibility
4.7.1. Reliant upon any 3rd parties?
4.7.1.1. APIs
4.7.1.2. DBs (local or remote)
4.7.1.3. Web services (e.g. Google fonts)
4.7.1.4. Asset caches (e.g. Akami)
4.7.1.5. If any supporting services are not running...
4.7.1.5.1. ...what is the risk to the customer?
4.7.1.5.2. ...what error messages need to be displayed?
4.7.1.5.3. ...what state does this put the software in?
4.7.2. OS Support?
4.7.2.1. Consumer: Win XP, 7, 8, 8.1, 10, etc.
4.7.2.2. Server: 2000, 2008, 2012, etc.
4.8. Performance
4.8.1. How many concurrent clients can run for a single server instance?
4.8.2. User creation limit?
4.8.3. Message size limitations?
4.9. Installability
4.9.1. Potable app/zip only or installer available?
4.10. Development
4.10.1. Two products w/in Gigachat
4.10.1.1. Chat Server
4.10.1.2. Chat Client