-
Notifications
You must be signed in to change notification settings - Fork 19
Getting Started QA
Welcome QA engineers! Let's ensure EduLite works flawlessly for students everywhere - from high-speed fiber to 2G connections.
As a QA engineer for EduLite, you'll ensure:
- 🌍 Global reliability across all network conditions
- 📱 Device compatibility from old phones to new laptops
- ♾️ Lightweight functionality that actually works
- ♿ Accessibility for all abilities
- 🔐 Security of student data
- Testing mindset (breaking things creatively!)
- Attention to detail
- Basic technical knowledge
- Communication skills
- API testing experience
- Automation knowledge
- Performance testing
- Accessibility testing
- Multiple device access
-
Network Conditions
- 2G speeds (50 kbps)
- Intermittent connectivity
- High latency (500ms+)
- Packet loss scenarios
-
Device Diversity
- 5+ year old Android phones
- Low RAM devices (1-2GB)
- Small screens (320px wide)
- Outdated browsers
-
User Contexts
- Power outages mid-session
- Shared devices
- Multiple languages/RTL
- Limited tech knowledge
This section introduces a hypothetical (not a real feature) issue that needs testing. It will walk your through the usual workflow of a QA Engineer within the EduLite Community!
Let's test a new feature comprehensively!
Study Timer: Helps students track study sessions
- Start/pause timer
- Reset functionality
- Persists on page refresh
- Shows elapsed time
Functional Tests:
## Test Case: ST-001 - Start Timer
**Precondition**: Timer at 00:00:00
**Steps**:
1. Click "Start" button
2. Wait 5 seconds
**Expected**: Timer shows 00:00:05
**Priority**: High
## Test Case: ST-002 - Pause Timer
**Precondition**: Timer running
**Steps**:
1. Click "Pause" button
**Expected**:
- Timer stops incrementing
- Button changes to "Start"
**Priority**: High
## Test Case: ST-003 - Timer Persistence
**Precondition**: Timer at 00:05:00
**Steps**:
1. Refresh page (F5)
**Expected**: Timer still shows 00:05:00
**Priority**: HighEdge Cases:
## Test Case: ST-010 - Multiple Tabs
**Steps**:
1. Start timer in Tab 1
2. Open same page in Tab 2
**Expected**: Both show same time
**Priority**: Medium
## Test Case: ST-011 - Browser Crash
**Steps**:
1. Start timer
2. Force close browser
3. Reopen and navigate back
**Expected**: Timer continues from last time
**Priority**: MediumNetwork Testing:
# Chrome DevTools - Network Throttling
1. Open DevTools (F12)
2. Network tab
3. Select "Slow 3G" or create custom:
- Download: 50 kb/s
- Upload: 20 kb/s
- Latency: 2000 msDevice Testing:
Physical Devices:
- Old Android phone (Android 6)
- iPhone SE (small screen)
- Tablet (touch interactions)
- Desktop (keyboard navigation)
Emulators:
- Chrome DevTools device mode
- BrowserStack (if available)
Bug Report Template:
## Bug: Timer resets on language change
**Severity**: Medium
**Priority**: High
**Environment**: Chrome 91, Windows 10
**Steps to Reproduce**:
1. Start timer (shows 00:00:05)
2. Change language from English to Arabic
3. Observe timer
**Expected Result**:
Timer continues from 00:00:05
**Actual Result**:
Timer resets to 00:00:00
**Screenshots/Video**:
[Attach evidence]
**Additional Info**:
- Works correctly on Firefox
- Console shows no errorsKeyboard Navigation:
1. Tab to Start button
2. Press Enter (should start)
3. Tab to Pause button
4. Press Enter (should pause)
5. All focus states visible?
Screen Reader:
1. Enable screen reader
2. Navigate to timer
3. Should announce:
- "Study Timer, 0 hours 0 minutes 0 seconds"
- "Start button"
- Time updates periodically
🎉 Great job! You've completed your first comprehensive test!
Core User Flows:
1. Registration → Login → Dashboard
2. Join Class → View Assignment → Submit
3. Send Message → Receive Reply
4. Create Study Group → Invite Friends
Critical Features:
- Authentication (login/logout)
- Assignment submission
- Offline mode sync
- Real-time messaging
- File uploads
Page Load Targets:
Network | Target | Maximum
------------|--------|--------
4G | 1s | 3s
3G | 3s | 5s
2G | 5s | 10s
Offline | 1s | 2s (cached)
Tools:
- Lighthouse (built into Chrome)
- WebPageTest.org
- Network throttling
- Chrome Performance tab
Browser Matrix:
Desktop:
- Chrome (latest-2)
- Firefox (latest-2)
- Safari (latest-1)
- Edge (latest-1)
Mobile:
- Chrome Android
- Safari iOS
- Samsung Internet
- Firefox Mobile
Device Priority:
- Budget Android phones (most users)
- Old iPhones (iPhone 6+)
- Tablets (shared devices)
- Desktop (teachers)
Basic Security Checks:
1. SQL Injection:
- Try: ' OR '1'='1
- In login/search fields
2. XSS (Cross-Site Scripting):
- Try: <script>alert('XSS')</script>
- In all input fields
3. Authentication:
- Access protected pages without login
- Check session timeout
- Multiple login attempts
4. File Upload:
- Try non-allowed file types
- Large files (>10MB)
- Malicious filenames
# 1. Setup both frontend and backend
cd backend/EduLite
python manage.py runserver
# New terminal
cd Frontend/EduLiteFrontend
npm run dev
# 2. Create test data
python manage.py create_dummy_users 50User Personas:
1. Ahmad (Student - Gaza)
- Slow internet
- Arabic language
- Shared device
2. Sarah (Teacher - Canada)
- Good internet
- Multiple classes
- Desktop user
3. Joy (Student - Nigeria)
- Mobile only
- Limited data
- English language
Critical: System unusable
- Can't login
- Data loss
- Security breach
- Complete feature failure
High: Major feature broken
- Can't submit assignments
- Messages not sending
- Offline sync fails
Medium: Feature partially broken
- UI issues
- Non-critical errors
- Performance degradation
Low: Minor issues
- Typos
- Cosmetic issues
- Enhancement requests
## Title: Clear, specific description
**Environment**:
- Device: Samsung Galaxy A10
- OS: Android 8.0
- Browser: Chrome 89
- Network: 3G
- Language: Arabic
**Preconditions**:
- Logged in as student
- Has 3 pending assignments
**Steps**: (Numbered, specific)
1. Go to Assignments page
2. Click first assignment
3. Click "Submit" without selecting file
**Expected**: Error message "Please select a file"
**Actual**: Page refreshes, no error shown
**Evidence**:
- Screenshot: [link]
- Video: [link]
- Console errors: [paste]
**Impact**: Students might think they submitted
**Workaround**: Select file before clicking submitHigh Priority:
- Login/logout flows
- Critical user paths
- API response validation
- Data integrity checks
Low Priority:
- UI visual tests
- One-time features
- Rapidly changing features
# tests/test_login.py
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestLogin:
def setup_method(self):
self.driver = webdriver.Chrome()
self.driver.get("http://localhost:5173")
def test_valid_login(self):
# Find and fill username
username = self.driver.find_element(By.ID, "username")
username.send_keys("testuser")
# Find and fill password
password = self.driver.find_element(By.ID, "password")
password.send_keys("testpass123")
# Click login
login_btn = self.driver.find_element(By.ID, "login-btn")
login_btn.click()
# Verify redirect to dashboard
assert "dashboard" in self.driver.current_url
def teardown_method(self):
self.driver.quit()-
Browser DevTools
- Network throttling
- Device emulation
- Console errors
- Performance profiling
-
Accessibility Tools
- WAVE (browser extension)
- axe DevTools
- Screen readers (NVDA, JAWS)
- Keyboard navigation
-
Network Tools
- Chrome Network tab
- Fiddler/Charles Proxy
- Postman (API testing)
- cURL commands
-
Cross-browser Testing
- BrowserStack (if available)
- Local VM setup
- Device labs
- Friends' devices!
Functionality:
- All user flows work
- Forms validate correctly
- Error messages helpful
- Success messages clear
- No console errors
Performance:
- Loads under 3s on 3G
- Images optimized
- No memory leaks
- Smooth scrolling
Compatibility:
- Works on target browsers
- Mobile responsive
- Touch-friendly
- Keyboard navigable
Accessibility:
- Screen reader compatible
- Color contrast passes
- Focus indicators visible
- Alt text present
Localization:
- All text translatable
- RTL layout works
- Date/time formats
- No hardcoded strings
Security:
- Input validation works
- Auth properly enforced
- No sensitive data exposed
- HTTPS everywhere
Scenario: Multiple students join class simultaneously
1. Create class with teacher account
2. Have 5 students join at once
3. Teacher starts live session
4. All students should see updates
5. Test with 50+ students
Scenario: Arabic language and RTL
1. Switch to Arabic
2. Verify ALL text translated
3. Check RTL layout
4. Test form inputs (RTL)
5. Verify date formats
6. Check number formats
Scenario: Student with 50MB daily limit
1. Track data usage per action:
- Login: ___KB
- Load assignment: ___KB
- Submit text: ___KB
- Load image: ___KB
2. Optimize what uses most
Real scenarios:
- "My internet cut out during submission"
- "I can't read English well"
- "This is my first time using a computer"
- "I share this phone with my family"
- "I only have 30 minutes of internet"
Unhappy paths:
- Wrong password 5 times
- Upload 100MB file
- 1000 character username
- Submit assignment 1 second late
- Join class that's full
- Send message to blocked user
Test Log Template:
Date: 2024-03-15
Tester: Your Name
Build: v1.2.3
Environment: Staging
Test | Result | Notes
-----|--------|------
Login with valid credentials | PASS | 2s load time
Login with invalid password | PASS | Good error message
Login with SQL injection | PASS | Input sanitized
Good: "The submit button doesn't work when offline"
Better: "The submit button is disabled when offline,
but there's no message explaining why. Students
might think it's broken. Could we add a tooltip?"
- Test Case Repository
- [Bug Database](GitHub Issues)
- Test Environments
- Testing questions: Discord #qa channel
- Bug discussions: GitHub issue comments
- Tool help: Discord #testing-tools
- Strategy: GitHub Discussions
## Testing Update
**What I tested**: Login flow on mobile devices
**Coverage**:
- ✅ 5 different Android devices
- ✅ 3 iOS devices
- ✅ 2G, 3G, 4G networks
- ❌ Tablet testing (no device)
**Issues Found**:
1. [Critical] Login button not tappable on Android 6
2. [Medium] Password field shows wrong keyboard
3. [Low] Success message cut off on 320px screens
**Recommendations**:
1. Increase button tap target to 44px
2. Add inputmode="password" attribute
3. Adjust message padding on mobileAs a QA engineer for EduLite, you're:
- 🔍 The student's advocate - Finding issues before they do
- 🌍 The global tester - Ensuring it works everywhere
- 🛡️ The quality guardian - Protecting the user experience
- 💚 The improvement driver - Making EduLite better daily
- 1 bug found = Hundreds of students helped
- 1 performance improvement = Works in more places
- 1 accessibility fix = No student excluded
- 1 security issue = Student data protected
Test with purpose. Break things constructively. Make education reliable for everyone. 🔍
💚 The best QA engineers don't just find bugs - they advocate for students who might struggle silently with issues we never thought to test. When you test for the student in Gaza during a blackout, you test for everyone.