You may notice when you arrive here for the first time this week an advertisement for the Great Australian Internet Blackout. I’m against internet censorship and I thought I would talk about the compexity of testing the proposed system.
There are many aspects to consider; let me briefly outline the topics and I’ll handle them one at a time: functionality, performance, scalability, non-repudiation, integrity, confidentiality, user experience and workflow.
From a functional perspective the most important thing is whether or not it stops people in Australia access banned websites. This is done at the Internet Service Provider (ISP). All of your internet request have to go through their router before heading out into the ether. This already happens and the blacklist filter system already exists in routers.
Achieving a working filter is easy. Is the domain requested on the list; if yes then reject. However, If I make a request to a server that is not on the list and that server requests the banned site on my behalf me and passes the content back to me then it won’t get blocked. This is known as proxy server. This wikipedia entry has more information about proxies. This test should be failed.
If you consider the workflows involved in this system you have adding and removing sites from the list; propegating the lists to the ISP and validating a user request. Once a site is added or removed from the list is sent to all ISP’s or all ISP’s refer to the latest master.
It could be that there is only one list and everyone looks at it. This ensures consistency as there is only one source of information but impacts performance and scalability; both of which I will cover later. If each ISP has there own copy of the list then you have a delay between when the master list is updated and the ISP copy is updated. During this time we can have users being able to access banned sites dependant on their ISP.
This delay could be acceptable. The ISP’s may have 48 hours to apply a change and if a few kids look up something they shouldn’t we deal with it. A partial success is better than no success here.
What about sites that are legitimate that get banned or are incorrectly placed on the list. It could be a typo. Updating the list is a manual process; someone has to type the domain in. What if that was your business and you got banned. Would you know? How much business would you lose? What checks are in place to ensure that the correct domain is being banned. Adding beaurocracy will increase the chance of correctness but will slowly down the ability to change.
The banned list needs to be kept confidential (for our own good) but the more parties involved in a process the more chance it can go public. Do the necessary people that have access to the list at each ISP need a specific security classification? Will this impact their ability to hire new people? Is this person open to social engineering techniques that may lead them to give up the list.
What if the list becomes public? There is a ridiculous number of domains out there but not an infinite amount. A group of like minded individuals could easily write a web crawler to check each domain to see whether it was banned. with cloud and crowd-sourcing it would still take a while but it could be done.
What then?
Does the Australian Government log who attempts to access content which has been “refused classification” or otherwise deemed inappropriate for Australians? Can this be used against someone? If I force someone to redirect to or unknowingly link to a banned site, can it be used against them?
It’s illegal for a company to track your web presence beyond their own domain but what about the Government? What if they track each and every banned domain you visit? The police could come around and arrest you without warrant because your computer has a virus that is making requests to banned terrorism websites.
Hilarity ensues.
The performance of the system needs to be considered as well. Each and every request made by an Australian computer needs to be checked against a list. If you go to a website and it has analytics and maybe some ads to be displayed and the website pictures are stored on a different sub domain you will have one request for each and every item. All of these requests will need to be validated. This takes time, not much time but when you have millions of users making many more thousands of requests then the chance of quality decline increases.
You can’t replicate production to test performance the impacts. All you can do is use a small subset and do a trend analysis up to all of Australia. This doesn’t work as easily as you think. Hardware components have throughput thresholds and their performance may be bottlenecked by another component.
As a complete tester you need to know about all these aspects and know how to test them. Testing takes time and with a project this large you can’t skimp on time. However each day you test changes the environment as more people get online and computers get faster. The combination of manual work flows and software systems increases the complexity of testing. Work-flow testing needs to be run in simulations where operatives handle requests and respond accordingly.
All of this costs money and for a project that failed the second test. It is at this point the test lead for the project should stand up and say. This will not work in it’s current form.
Whether it is right or wrong is a separate issue. If you want information on that should visit http://www.nocleanfeed.com